Refractor stretch panel

This commit is contained in:
2022-04-09 10:28:36 +02:00
parent 5da85e53ec
commit 68fbcfbb59
4 changed files with 140 additions and 12 deletions
+7 -3
View File
@@ -3,6 +3,7 @@
#include <QPainter>
#include <QPaintEvent>
#include <QPainterPath>
#include <QToolTip>
static float clamp(float x)
{
@@ -94,16 +95,19 @@ void STFSlider::mouseMoveEvent(QMouseEvent *event)
switch(m_grabbed)
{
case 0:
m_blackPoint = (qreal)event->x()/width();
m_blackPoint = clamp((qreal)event->x()/width());
m_whitePoint = std::max(m_whitePoint, m_blackPoint);
QToolTip::showText(event->globalPos(), QString::number(m_blackPoint), this);
break;
case 1:
m_midPoint = ((qreal)event->x()/width() - m_blackPoint) / (m_whitePoint - m_blackPoint);
m_midPoint = std::max(std::min(m_midPoint, 1.0f), 0.0f);
m_midPoint = clamp(m_midPoint);
QToolTip::showText(event->globalPos(), QString::number(m_midPoint), this);
break;
case 2:
m_whitePoint = (qreal)event->x()/width();
m_whitePoint = clamp((qreal)event->x()/width());
m_blackPoint = std::min(m_blackPoint, m_whitePoint);
QToolTip::showText(event->globalPos(), QString::number(m_whitePoint), this);
break;
}
if(m_grabbed >= 0)