From 907e6ff05d35278303bc72ba5d93614da6ca0ab7 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 1 Jan 2021 21:54:35 +0100 Subject: [PATCH] statistics: add series interface class Add a interface class for the chart series used by the statistics module. Abstract virtual functions are declared for replotting and selecting items. Signed-off-by: Berthold Stoeger --- stats/CMakeLists.txt | 2 ++ stats/statsseries.cpp | 18 ++++++++++++++++++ stats/statsseries.h | 27 +++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 stats/statsseries.cpp create mode 100644 stats/statsseries.h diff --git a/stats/CMakeLists.txt b/stats/CMakeLists.txt index c8ab86997..bf11d06fd 100644 --- a/stats/CMakeLists.txt +++ b/stats/CMakeLists.txt @@ -11,6 +11,8 @@ set(SUBSURFACE_STATS_SRCS statsaxis.cpp statscolors.h statscolors.cpp + statsseries.h + statsseries.cpp statsvariables.h statsvariables.cpp zvalues.h diff --git a/stats/statsseries.cpp b/stats/statsseries.cpp new file mode 100644 index 000000000..2fff4b306 --- /dev/null +++ b/stats/statsseries.cpp @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "statsseries.h" +#include "statsaxis.h" + +#include + +StatsSeries::StatsSeries(QtCharts::QChart *chart, StatsAxis *xAxis, StatsAxis *yAxis) +{ + chart->addSeries(this); + if (xAxis && yAxis) { + attachAxis(xAxis->qaxis()); + attachAxis(yAxis->qaxis()); + } +} + +StatsSeries::~StatsSeries() +{ +} diff --git a/stats/statsseries.h b/stats/statsseries.h new file mode 100644 index 000000000..567f32644 --- /dev/null +++ b/stats/statsseries.h @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0 +// Base class for all series. Defines a small virtual interface +// concerning highlighting of series items. +#ifndef STATS_SERIES_H +#define STATS_SERIES_H + +#include + +namespace QtCharts { + class QChart; +} +class StatsAxis; + +// We derive from a proper scatter series to get access to the map-to +// and map-from coordinates calls. But we don't use any of its functionality. +// This should be removed in due course. + +class StatsSeries : public QtCharts::QScatterSeries { +public: + StatsSeries(QtCharts::QChart *chart, StatsAxis *xAxis, StatsAxis *yAxis); + virtual ~StatsSeries(); + virtual void updatePositions() = 0; // Called if chart geometry changes. + virtual bool hover(QPointF pos) = 0; // Called on mouse movement. Return true if an item of this series is highlighted. + virtual void unhighlight() = 0; // Unhighlight any highlighted item. +}; + +#endif