diff options
| -rw-r--r-- | spline/spline-widget.cpp | 37 | ||||
| -rw-r--r-- | spline/spline.cpp | 2 | 
2 files changed, 20 insertions, 19 deletions
| diff --git a/spline/spline-widget.cpp b/spline/spline-widget.cpp index 6cb05e6b..fdfe8ec7 100644 --- a/spline/spline-widget.cpp +++ b/spline/spline-widget.cpp @@ -48,7 +48,7 @@ void spline_widget::setConfig(base_spline* spl)          std::shared_ptr<base_spline::base_settings> s = spl->get_settings();          connection = connect(s.get(), &spline::base_settings::recomputed, -                             this, [this]() { reload_spline(); }, +                             this, [this] { reload_spline(); },                               Qt::QueuedConnection);      }  } @@ -152,7 +152,7 @@ void spline_widget::drawFunction()          moving_control_point_idx < points.size())      {          const QPen pen(Qt::white, 1, Qt::SolidLine, Qt::FlatCap); -        const QPointF prev_ = point_to_pixel(QPointF(0, 0)); +        const QPointF prev_ = point_to_pixel({});          QPointF prev(iround(prev_.x()), iround(prev_.y()));          for (int i = 0; i < points.size(); i++)          { @@ -187,7 +187,7 @@ void spline_widget::drawFunction()      constexpr double step_ = 5;      const double maxx = _config->max_input(); -    const double step = step_ / c.x(); +    const double step = std::fmax(1e-4, step_ / c.x());      QPainterPath path; @@ -195,21 +195,21 @@ void spline_widget::drawFunction()      const double max_x_pixel = point_to_pixel({maxx, 0}).x(); -    auto check = [=](const QPointF& val) { -        return val.x() < max_x_pixel +    auto clamp = [=](const QPointF& val) { +        return val.x() <= max_x_pixel                 ? val -               : QPointF(max_x_pixel, val.y()); +               : QPointF{max_x_pixel, val.y()};      };      for (double k = 0; k < maxx; k += step*3)      { -        const float next_1(_config->get_value_no_save(k + step*1)); -        const float next_2(_config->get_value_no_save(k + step*2)); -        const float next_3(_config->get_value_no_save(k + step*3)); +        const auto next_1 = (double) _config->get_value_no_save(k + step*1); +        const auto next_2 = (double) _config->get_value_no_save(k + step*2); +        const auto next_3 = (double) _config->get_value_no_save(k + step*3); -        QPointF b(check(point_to_pixel(QPointF(k + step*1, qreal(next_1))))), -                c(check(point_to_pixel(QPointF(k + step*2, qreal(next_2))))), -                d(check(point_to_pixel(QPointF(k + step*3, qreal(next_3))))); +        QPointF b(clamp(point_to_pixel({k + step*1, next_1}))), +                c(clamp(point_to_pixel({k + step*2, next_2}))), +                d(clamp(point_to_pixel({k + step*3, next_3})));          path.cubicTo(b, c, d);      } @@ -222,15 +222,15 @@ void spline_widget::drawFunction()      QPointF prev = point_to_pixel({});      for (double i = 0; i < max; i += step)      { -        const double val = double(_config->get_value_no_save(i)); -        const QPointF cur = point_to_pixel(QPointF(i, val)); +        const auto val = (double) _config->get_value_no_save(i); +        const QPointF cur = point_to_pixel({i, val});          painter.drawLine(prev, cur);          prev = cur;      }      { -        painter.drawLine(QPointF(prev), point_to_pixel_(QPointF(maxx, maxy)));          const double maxx = _config->max_input();          const double maxy = double(_config->get_value_no_save(maxx)); +        painter.drawLine(prev, point_to_pixel({ maxx, maxy }));      }  #endif @@ -528,7 +528,8 @@ void spline_widget::show_tooltip(const QPoint& pos, const QPointF& value_)      if (std::fabs(y_ - y) < 1e-3)          y = y_; -    const bool is_fusion = QStringLiteral("fusion") == QApplication::style()->objectName(); +    static const bool is_fusion = QStringLiteral("fusion") == QApplication::style()->objectName(); +    // no fusion means OSX      const int add_x = (is_fusion ? 25 : 0), add_y = (is_fusion ? 15 : 0);      const QPoint pix(pos.x() + add_x, pos.y() + add_y); @@ -560,7 +561,7 @@ void spline_widget::update_range()      const int mwr = 15, mhr = 35;      pixel_bounds = QRect(mwl, mhl, (w - mwl - mwr), (h - mhl - mhr)); -    c = QPointF(pixel_bounds.width() / _config->max_input(), pixel_bounds.height() / _config->max_output()); +    c = { pixel_bounds.width() / _config->max_input(), pixel_bounds.height() / _config->max_output() };      _draw_function = true;      _background = QPixmap(); @@ -619,7 +620,7 @@ QPointF spline_widget::pixel_to_point(const QPointF& point)      if (y > _config->max_output())          y = _config->max_output(); -    return QPointF(x, y); +    return { x, y };  }  QPointF spline_widget::point_to_pixel(const QPointF& point) diff --git a/spline/spline.cpp b/spline/spline.cpp index e32cfd0c..ad2ea6b3 100644 --- a/spline/spline.cpp +++ b/spline/spline.cpp @@ -348,7 +348,7 @@ void spline::set_bundle(bundle b, const QString& axis_name, Axis axis)          if (b)          {              connection = QObject::connect(b.get(), &bundle_::changed, -                                          s.get(), [&]() { invalidate_settings(); }); +                                          s.get(), [&] { invalidate_settings(); });              // this isn't strictly necessary for the spline but helps the widget              conn_maxx = QObject::connect(&s->opts.clamp_x_, base_value::value_changed<int>(), | 
