summaryrefslogtreecommitdiffhomepage
path: root/qfunctionconfigurator/qfunctionconfigurator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qfunctionconfigurator/qfunctionconfigurator.cpp')
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator.cpp34
1 files changed, 13 insertions, 21 deletions
diff --git a/qfunctionconfigurator/qfunctionconfigurator.cpp b/qfunctionconfigurator/qfunctionconfigurator.cpp
index 94a31be5..f1ed3001 100644
--- a/qfunctionconfigurator/qfunctionconfigurator.cpp
+++ b/qfunctionconfigurator/qfunctionconfigurator.cpp
@@ -3,7 +3,6 @@
#include <QPaintEvent>
#include <QPen>
#include <QPixmap>
-#include <QTimer>
#include <cmath>
#include <algorithm>
@@ -36,7 +35,7 @@ void QFunctionConfigurator::drawBackground()
if (!_config)
return;
_background = QPixmap(width(), height());
-
+
QPainter painter(&_background);
painter.fillRect(rect(), QColor::fromRgb(204, 204, 204));
@@ -135,7 +134,7 @@ void QFunctionConfigurator::drawFunction()
static constexpr double step = 1.02;
const double max = _config->maxInput();
-
+
QPointF prev = point_to_pixel(QPointF(0, 0));
for (double i = 0; i < max; i += step) {
double val = _config->getValue(i);
@@ -156,7 +155,7 @@ void QFunctionConfigurator::paintEvent(QPaintEvent *e)
_draw_function = false;
drawFunction();
}
-
+
p.drawPixmap(e->rect(), _function);
if (_config) {
@@ -260,32 +259,25 @@ void QFunctionConfigurator::mouseMoveEvent(QMouseEvent *e)
{
if (!_config)
return;
-
- static constexpr int min_refresh_delay = 12;
-
- if (timer.isValid() && timer.elapsed() < min_refresh_delay)
- return;
-
- static constexpr int refresh_delay = 17;
+
QList<QPointF> points = _config->getPoints();
if (moving_control_point_idx != -1 && moving_control_point_idx < points.size()) {
setCursor(Qt::ClosedHandCursor);
-
+
bool overlap = false;
-
+
QPointF new_pt = pixel_coord_to_point(e->pos());
-
+
if (moving_control_point_idx + 1 < points.size())
overlap |= new_pt.x() > points[moving_control_point_idx+1].x();
if (moving_control_point_idx != 0)
overlap |= new_pt.x() < points[moving_control_point_idx-1].x();
-
+
if (overlap)
moving_control_point_idx = -1;
- else if (timer.isValid() && timer.elapsed() > refresh_delay)
+ else
{
- timer.restart();
points[moving_control_point_idx] = new_pt;
_config->movePoint(moving_control_point_idx, new_pt);
_draw_function = true;
@@ -323,7 +315,7 @@ void QFunctionConfigurator::mouseReleaseEvent(QMouseEvent *e)
}
setCursor(Qt::ArrowCursor);
moving_control_point_idx = -1;
-
+
_draw_function = true;
update();
}
@@ -333,15 +325,15 @@ void QFunctionConfigurator::update_range()
{
if (!_config)
return;
-
+
const double w = width(), h = height();
const double mwl = 40, mhl = 20;
const double mwr = 15, mhr = 35;
-
+
pixel_bounds = QRectF(mwl, mhl, (w - mwl - mwr), (h - mhl - mhr));
c = QPointF(pixel_bounds.width() / _config->maxInput(), pixel_bounds.height() / _config->maxOutput());
_draw_function = true;
-
+
_background = QPixmap();
_function = QPixmap();
}