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 <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2021-01-01 21:54:35 +01:00 committed by Dirk Hohndel
parent 31da037701
commit 907e6ff05d
3 changed files with 47 additions and 0 deletions

View file

@ -11,6 +11,8 @@ set(SUBSURFACE_STATS_SRCS
statsaxis.cpp
statscolors.h
statscolors.cpp
statsseries.h
statsseries.cpp
statsvariables.h
statsvariables.cpp
zvalues.h

18
stats/statsseries.cpp Normal file
View file

@ -0,0 +1,18 @@
// SPDX-License-Identifier: GPL-2.0
#include "statsseries.h"
#include "statsaxis.h"
#include <QChart>
StatsSeries::StatsSeries(QtCharts::QChart *chart, StatsAxis *xAxis, StatsAxis *yAxis)
{
chart->addSeries(this);
if (xAxis && yAxis) {
attachAxis(xAxis->qaxis());
attachAxis(yAxis->qaxis());
}
}
StatsSeries::~StatsSeries()
{
}

27
stats/statsseries.h Normal file
View file

@ -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 <QScatterSeries>
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