From b604fc4c3d10e9d1aee52ad821e02a96cfabc0fb 2017-08-02 09:30:45 From: Alexandre Leroux Date: 2017-08-02 09:30:45 Subject: [PATCH] Creates a delegate offering methods for rendering a graph --- diff --git a/gui/include/Visualization/VisualizationGraphRenderingDelegate.h b/gui/include/Visualization/VisualizationGraphRenderingDelegate.h new file mode 100644 index 0000000..6e34ac3 --- /dev/null +++ b/gui/include/Visualization/VisualizationGraphRenderingDelegate.h @@ -0,0 +1,18 @@ +#ifndef SCIQLOP_VISUALIZATIONGRAPHRENDERINGDELEGATE_H +#define SCIQLOP_VISUALIZATIONGRAPHRENDERINGDELEGATE_H + +#include + +class QCustomPlot; +class QMouseEvent; + +class VisualizationGraphRenderingDelegate { +public: + explicit VisualizationGraphRenderingDelegate(QCustomPlot &plot); + +private: + class VisualizationGraphRenderingDelegatePrivate; + spimpl::unique_impl_ptr impl; +}; + +#endif // SCIQLOP_VISUALIZATIONGRAPHRENDERINGDELEGATE_H diff --git a/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp new file mode 100644 index 0000000..56fc4bf --- /dev/null +++ b/gui/src/Visualization/VisualizationGraphRenderingDelegate.cpp @@ -0,0 +1,13 @@ +#include "Visualization/VisualizationGraphRenderingDelegate.h" +#include "Visualization/qcustomplot.h" + +struct VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegatePrivate { + explicit VisualizationGraphRenderingDelegatePrivate(QCustomPlot &plot) : m_Plot{plot} {} + + QCustomPlot &m_Plot; +}; + +VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate(QCustomPlot &plot) + : impl{spimpl::make_unique_impl(plot)} +{ +} diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index 275a284..c2cb2f5 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -1,6 +1,7 @@ #include "Visualization/VisualizationGraphWidget.h" #include "Visualization/IVisualizationWidgetVisitor.h" #include "Visualization/VisualizationGraphHelper.h" +#include "Visualization/VisualizationGraphRenderingDelegate.h" #include "ui_VisualizationGraphWidget.h" #include @@ -33,17 +34,21 @@ double toleranceValue(const QString &key, double defaultValue) noexcept struct VisualizationGraphWidget::VisualizationGraphWidgetPrivate { - explicit VisualizationGraphWidgetPrivate() : m_DoSynchronize{true}, m_IsCalibration{false} {} - + explicit VisualizationGraphWidgetPrivate() + : m_DoSynchronize{true}, m_IsCalibration{false}, m_RenderingDelegate{nullptr} + { + } // Return the operation when range changed VisualizationGraphWidgetZoomType getZoomType(const QCPRange &t1, const QCPRange &t2); // 1 variable -> n qcpplot std::multimap, QCPAbstractPlottable *> m_VariableToPlotMultiMap; - bool m_DoSynchronize; bool m_IsCalibration; + QCPItemTracer *m_TextTracer; + /// Delegate used to attach rendering features to the plot + std::unique_ptr m_RenderingDelegate; }; VisualizationGraphWidget::VisualizationGraphWidget(const QString &name, QWidget *parent) @@ -53,6 +58,9 @@ VisualizationGraphWidget::VisualizationGraphWidget(const QString &name, QWidget { ui->setupUi(this); + // The delegate must be initialized after the ui as it uses the plot + impl->m_RenderingDelegate = std::make_unique(*ui->widget); + ui->graphNameLabel->setText(name); // 'Close' options : widget is deleted when closed