subsurface/stats/quartilemarker.cpp
Berthold Stoeger 790d2b2ddb statistics: convert QuartileMarkers to QSGNodes
Slowly converting the QGraphicsScene items to QSGNodes to
avoid full replot of the scene.

This adds a new abstraction for line-nodes. Since the render()
function here is fundamentally different from the pixmap-nodes
we had so far, this has to be made virtual.

Also, move the quartile markers to their own source file,
since the StatsView source file is quite huge already.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-20 08:47:18 +01:00

30 lines
753 B
C++

// SPDX-License-Identifier: GPL-2.0
#include "quartilemarker.h"
#include "statsaxis.h"
#include "zvalues.h"
static const QColor quartileMarkerColor(Qt::red);
static const double quartileMarkerSize = 15.0;
QuartileMarker::QuartileMarker(StatsView &view, double pos, double value, StatsAxis *xAxis, StatsAxis *yAxis) :
ChartLineItem(view, ChartZValue::ChartFeatures, quartileMarkerColor, 2.0),
xAxis(xAxis), yAxis(yAxis),
pos(pos),
value(value)
{
updatePosition();
}
QuartileMarker::~QuartileMarker()
{
}
void QuartileMarker::updatePosition()
{
if (!xAxis || !yAxis)
return;
double x = xAxis->toScreen(pos);
double y = yAxis->toScreen(value);
setLine(QPointF(x - quartileMarkerSize / 2.0, y),
QPointF(x + quartileMarkerSize / 2.0, y));
}