OGS
StratBar.cpp
Go to the documentation of this file.
1
15#include "StratBar.h"
16
17#include <QPainter>
18
20 std::map<std::string, DataHolderLib::Color>* stratColors,
21 QGraphicsItem* parent)
22 : QGraphicsItem(parent), _station(station)
23{
24 if (stratColors)
25 {
26 _stratColors = *stratColors;
27 }
28}
29
31{
32 return QRectF(0, 0, BARWIDTH + 10, totalLogHeight());
33}
34
35void StratBar::paint(QPainter* painter,
36 const QStyleOptionGraphicsItem* option,
37 QWidget* widget)
38{
39 Q_UNUSED(option)
40 Q_UNUSED(widget)
41
42 double top = 0;
43 double height = 0;
44
45 QPen pen(Qt::black, 1, Qt::SolidLine, Qt::SquareCap, Qt::RoundJoin);
46 pen.setCosmetic(true);
47 painter->setPen(pen);
48 // painter->drawRect(_bar);
49
50 // pen.setWidth(1);
51 std::vector<GeoLib::Point*> profile = _station->getProfile();
52 std::vector<std::string> soilNames = _station->getSoilNames();
53 std::size_t nLayers = profile.size();
54
55 painter->drawLine(0, 0, BARWIDTH + 5, 0);
56
57 for (std::size_t i = 1; i < nLayers; i++)
58 {
59 top += height;
60 height = logHeight(((*(profile[i - 1]))[2] - (*(profile[i]))[2]));
61 QRectF layer(0, top, BARWIDTH, height);
62 DataHolderLib::Color const& c(
64 QBrush brush(QColor(static_cast<int>(c[0]),
65 static_cast<int>(c[1]),
66 static_cast<int>(c[2]),
67 127),
68 Qt::SolidPattern);
69 painter->setBrush(brush);
70
71 painter->drawRect(layer);
72 painter->drawLine(0,
73 static_cast<int>(layer.bottom()),
74 BARWIDTH + 5,
75 static_cast<int>(layer.bottom()));
76 // painter->drawText(BARWIDTH+10, layer.bottom(),
77 // QString::number((*(profile[i]))[2]));
78 }
79}
80
82{
83 double height = 0;
84 std::vector<GeoLib::Point*> profile = _station->getProfile();
85
86 for (std::size_t i = 1; i < profile.size(); i++)
87 {
88 height += (log((*(profile[i - 1]))[2] - (*(profile[i]))[2] + 1) * 100);
89 }
90
91 return height;
92}
Definition of the StratBar class.
A borehole as a geometric object.
const std::vector< std::string > & getSoilNames() const
const std::vector< Point * > & getProfile() const
double logHeight(double h) const
Calculates the height for a soil layer by "log(d+1)*100".
Definition StratBar.h:57
double totalLogHeight() const
Calculates the total height of the bar by calculating and adding the log-height for all layers in the...
Definition StratBar.cpp:81
static const int BARWIDTH
The default width of the bar.
Definition StratBar.h:63
QRectF boundingRect() const override
Returns the bounding rectangle of the bar.
Definition StratBar.cpp:30
std::map< std::string, DataHolderLib::Color > _stratColors
Definition StratBar.h:66
GeoLib::StationBorehole * _station
Definition StratBar.h:65
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Paints the bar.
Definition StratBar.cpp:35
StratBar(GeoLib::StationBorehole *station, std::map< std::string, DataHolderLib::Color > *stratColors=nullptr, QGraphicsItem *parent=nullptr)
Constructor.
Definition StratBar.cpp:19
Color getColor(const std::string &id, std::map< std::string, Color > &colors)
Definition Color.cpp:36
std::array< unsigned char, 4 > Color
Definition Color.h:24