From 70c9aaa9c297d2b20b7d3b466ceaf5f1def36752 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 26 May 2016 17:16:43 +0200 Subject: spline-widget: allow using as preview when disabled --- spline-widget/qfunctionconfigurator.cpp | 30 ++++++++++++++++++++++-------- spline-widget/qfunctionconfigurator.h | 5 ++++- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/spline-widget/qfunctionconfigurator.cpp b/spline-widget/qfunctionconfigurator.cpp index 18af8c46..538b5dc9 100644 --- a/spline-widget/qfunctionconfigurator.cpp +++ b/spline-widget/qfunctionconfigurator.cpp @@ -19,9 +19,10 @@ QFunctionConfigurator::QFunctionConfigurator(QWidget *parent) : QWidget(parent), _config(nullptr), moving_control_point_idx(-1), - _draw_function(true), snap_x(0), - snap_y(0) + snap_y(0), + _draw_function(true), + _preview_only(false) { update_range(); setMouseTracking(true); @@ -37,6 +38,16 @@ void QFunctionConfigurator::setConfig(Map* config, const QString& name) { update(); } +void QFunctionConfigurator::set_preview_only(bool val) +{ + _preview_only = val; +} + +bool QFunctionConfigurator::is_preview_only() const +{ + return _preview_only; +} + void QFunctionConfigurator::drawBackground() { if (!_config) @@ -47,7 +58,7 @@ void QFunctionConfigurator::drawBackground() painter.fillRect(rect(), QColor::fromRgb(204, 204, 204)); QColor bg_color(112, 154, 209); - if (!isEnabled()) + if (!isEnabled() && !_preview_only) bg_color = QColor(176,176,180); painter.fillRect(pixel_bounds, bg_color); @@ -120,13 +131,13 @@ void QFunctionConfigurator::drawFunction() QColor color = spline_color; - if (!isEnabled()) + if (!isEnabled() && !_preview_only) { - const int avg = 176; + const float avg = (color.red() + color.green() + color.blue())/3.f; auto color_ = color; - color = QColor(color_.red() * .5 + avg * .5, - color_.green() * .5 + avg * .5, - color_.blue() * .5 + avg * .5, + color = QColor(int(color_.red() * .5 + avg * .5), + int(color_.green() * .5 + avg * .5), + int(color_.blue() * .5 + avg * .5), 96); } @@ -201,6 +212,9 @@ void QFunctionConfigurator::paintEvent(QPaintEvent *e) void QFunctionConfigurator::drawPoint(QPainter *painter, const QPointF &pos, QColor colBG, QColor border) { + if (_preview_only) + return; + painter->save(); painter->setPen(border); painter->setBrush( colBG ); diff --git a/spline-widget/qfunctionconfigurator.h b/spline-widget/qfunctionconfigurator.h index ffd1dd78..1700dfca 100644 --- a/spline-widget/qfunctionconfigurator.h +++ b/spline-widget/qfunctionconfigurator.h @@ -19,6 +19,7 @@ class SPLINE_WIDGET_EXPORT QFunctionConfigurator : public QWidget { Q_OBJECT Q_PROPERTY(QColor colorBezier READ colorBezier WRITE setColorBezier) + Q_PROPERTY(bool is_preview_only READ is_preview_only WRITE set_preview_only) public: QFunctionConfigurator(QWidget *parent = 0); @@ -39,6 +40,8 @@ public: _background = QPixmap(); update(); } + void set_preview_only(bool val); + bool is_preview_only() const; void set_snap(int x, int y) { snap_x = x; snap_y = y; } void get_snap(int& x, int& y) const { x = snap_x; y = snap_y; } protected slots: @@ -72,8 +75,8 @@ private: QPixmap _background; QPixmap _function; - bool _draw_function; int snap_x, snap_y; + bool _draw_function, _preview_only; static constexpr int line_length_pixels = 3; static constexpr int point_size = 5; -- cgit v1.2.3