subsurface/stats/zvalues.h
Berthold Stoeger e1c0cace95 statistics: add notion of Z-value to chart items
The chart items were drawn in order of creation. To control this,
add a notion of Z-value. In contrast to QGraphicsScene, make
this a small integer value.

To controll order of drawing, a plain QSGNode is created for
every possible Z-Value and items are added to these nodes.
Thus, items are rendered by Z-value and if the Z-value is equal
by order of creation.

Likewise split the list of chart-items into Z-values, so that
items can be quickly unregistered: The items that will be
removed individually will usuall be part of Z-levels with only
few items (e.g. legend, infobox). Z-levels with many items
(notably the series) will always be fully rebuilt.

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

29 lines
805 B
C

// SPDX-License-Identifier: GPL-2.0
// Defines the z-values of features in the chart view.
// Objects with higher z-values are painted on top of objects
// with smaller z-values. For the same z-value objects are
// drawn in order of addition to the graphics scene.
#ifndef ZVALUES_H
struct ZValues {
static constexpr double grid = -1.0;
static constexpr double series = 0.0;
static constexpr double axes = 1.0;
static constexpr double seriesLabels = 2.0;
static constexpr double chartFeatures = 3.0; // quartile markers and regression lines
static constexpr double informationBox = 4.0;
static constexpr double legend = 5.0;
};
enum class ChartZValue {
Grid = 0,
Series,
Axes,
SeriesLabels,
ChartFeatures, // quartile markers and regression lines
InformationBox,
Legend,
Count
};
#endif