statistics: add a header file defining z-values

z-values determine the order in which objects on the chart are
painted. To reduce chaos, collect all z-values in a header file.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2021-01-02 10:25:04 +01:00 committed by Dirk Hohndel
parent fdde4c23ea
commit 3b26f6a767
3 changed files with 23 additions and 3 deletions

View file

@ -11,6 +11,7 @@ set(SUBSURFACE_STATS_SRCS
statscolors.cpp
statsvariables.h
statsvariables.cpp
zvalues.h
)
source_group("Subsurface statistics sourcecode" FILES ${SUBSURFACE_STATS_SRCS})

View file

@ -1,6 +1,8 @@
// SPDX-License-Identifier: GPL-2.0
#include "legend.h"
#include "statscolors.h"
#include "zvalues.h"
#include <QFontMetrics>
#include <QGraphicsSceneMouseEvent>
#include <QGraphicsWidget>
@ -16,7 +18,7 @@ static const QColor legendBorderColor(Qt::black);
Legend::Legend(QGraphicsWidget *chart, const std::vector<QString> &names) :
QGraphicsRectItem(chart), chart(chart), displayedItems(0), width(0.0), height(0.0)
{
setZValue(30.0); // On top of everything else.
setZValue(ZValues::legend);
entries.reserve(names.size());
int idx = 0;
for (const QString &name: names)
@ -42,10 +44,10 @@ Legend::Entry::Entry(const QString &name, int idx, int numBins, QGraphicsItem *p
rect(new QGraphicsRectItem(parent)),
text(new QGraphicsSimpleTextItem(name, parent))
{
rect->setZValue(30.0);
rect->setZValue(ZValues::legend);
rect->setPen(QPen(legendBorderColor, legendBoxBorderSize));
rect->setBrush(QBrush(binColor(idx, numBins)));
text->setZValue(30.0);
text->setZValue(ZValues::legend);
text->setBrush(QBrush(darkLabelColor));
}

17
stats/zvalues.h Normal file
View file

@ -0,0 +1,17 @@
// 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 axes = 0.0;
static constexpr double series = 11.0;
static constexpr double seriesLabels = 12.0;
static constexpr double chartFeatures = 13.0; // quartile markers and regression lines
static constexpr double informationBox = 14.0;
static constexpr double legend = 15.0;
};
#endif