OGS
StratBar Class Reference

Detailed Description

A 2D bar visualisation of a borehole stratigraphy.

A 2D bar visualisation of a borehole stratigraphy as a QGraphicsItem.

Definition at line 18 of file StratBar.h.

#include <StratBar.h>

Inheritance diagram for StratBar:
[legend]
Collaboration diagram for StratBar:
[legend]

Public Member Functions

 StratBar (GeoLib::StationBorehole *station, std::map< std::string, DataHolderLib::Color > *stratColors=nullptr, QGraphicsItem *parent=nullptr)
 Constructor.
 ~StratBar () override=default
QRectF boundingRect () const override
 Returns the bounding rectangle of the bar.
void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
 Paints the bar.

Private Member Functions

double logHeight (double h) const
 Calculates the height for a soil layer by "log(d+1)*100".
double totalLogHeight () const
 Calculates the total height of the bar by calculating and adding the log-height for all layers in the borehole.

Private Attributes

GeoLib::StationBorehole_station
std::map< std::string, DataHolderLib::Color_stratColors

Static Private Attributes

static const int BARWIDTH = 50
 The default width of the bar.

Constructor & Destructor Documentation

◆ StratBar()

StratBar::StratBar ( GeoLib::StationBorehole * station,
std::map< std::string, DataHolderLib::Color > * stratColors = nullptr,
QGraphicsItem * parent = nullptr )
explicit

Constructor.

Parameters
stationThe borehole whose stratigraphy will be visualised.
stratColorsA color map.
parentThe parent QGraphicsItem.

Definition at line 8 of file StratBar.cpp.

11 : QGraphicsItem(parent), _station(station)
12{
13 if (stratColors)
14 {
15 _stratColors = *stratColors;
16 }
17}
std::map< std::string, DataHolderLib::Color > _stratColors
Definition StratBar.h:55
GeoLib::StationBorehole * _station
Definition StratBar.h:54

References _station, and _stratColors.

◆ ~StratBar()

StratBar::~StratBar ( )
overridedefault

Member Function Documentation

◆ boundingRect()

QRectF StratBar::boundingRect ( ) const
override

Returns the bounding rectangle of the bar.

Definition at line 19 of file StratBar.cpp.

20{
21 return QRectF(0, 0, BARWIDTH + 10, totalLogHeight());
22}
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:70
static const int BARWIDTH
The default width of the bar.
Definition StratBar.h:52

References BARWIDTH, and totalLogHeight().

Referenced by StratScene::StratScene().

◆ logHeight()

double StratBar::logHeight ( double h) const
inlineprivate

Calculates the height for a soil layer by "log(d+1)*100".

Parameters
hThe original thickness of the soil layer.

Definition at line 46 of file StratBar.h.

46{ return log(h + 1) * 100; }

Referenced by paint().

◆ paint()

void StratBar::paint ( QPainter * painter,
const QStyleOptionGraphicsItem * option,
QWidget * widget )
override

Paints the bar.

Definition at line 24 of file StratBar.cpp.

27{
28 Q_UNUSED(option)
29 Q_UNUSED(widget)
30
31 double top = 0;
32 double height = 0;
33
34 QPen pen(Qt::black, 1, Qt::SolidLine, Qt::SquareCap, Qt::RoundJoin);
35 pen.setCosmetic(true);
36 painter->setPen(pen);
37 // painter->drawRect(_bar);
38
39 // pen.setWidth(1);
40 std::vector<GeoLib::Point*> profile = _station->getProfile();
41 std::vector<std::string> soilNames = _station->getSoilNames();
42 std::size_t nLayers = profile.size();
43
44 painter->drawLine(0, 0, BARWIDTH + 5, 0);
45
46 for (std::size_t i = 1; i < nLayers; i++)
47 {
48 top += height;
49 height = logHeight(((*(profile[i - 1]))[2] - (*(profile[i]))[2]));
50 QRectF layer(0, top, BARWIDTH, height);
53 QBrush brush(QColor(static_cast<int>(c[0]),
54 static_cast<int>(c[1]),
55 static_cast<int>(c[2]),
56 127),
57 Qt::SolidPattern);
58 painter->setBrush(brush);
59
60 painter->drawRect(layer);
61 painter->drawLine(0,
62 static_cast<int>(layer.bottom()),
63 BARWIDTH + 5,
64 static_cast<int>(layer.bottom()));
65 // painter->drawText(BARWIDTH+10, layer.bottom(),
66 // QString::number((*(profile[i]))[2]));
67 }
68}
double logHeight(double h) const
Calculates the height for a soil layer by "log(d+1)*100".
Definition StratBar.h:46
Color getColor(const std::string &id, std::map< std::string, Color > &colors)
Definition Color.cpp:25
std::array< unsigned char, 4 > Color
Definition Color.h:12

References _station, _stratColors, BARWIDTH, DataHolderLib::getColor(), and logHeight().

◆ totalLogHeight()

double StratBar::totalLogHeight ( ) const
private

Calculates the total height of the bar by calculating and adding the log-height for all layers in the borehole.

Definition at line 70 of file StratBar.cpp.

71{
72 double height = 0;
73 std::vector<GeoLib::Point*> profile = _station->getProfile();
74
75 for (std::size_t i = 1; i < profile.size(); i++)
76 {
77 height += (log((*(profile[i - 1]))[2] - (*(profile[i]))[2] + 1) * 100);
78 }
79
80 return height;
81}

References _station.

Referenced by boundingRect().

Member Data Documentation

◆ _station

GeoLib::StationBorehole* StratBar::_station
private

Definition at line 54 of file StratBar.h.

Referenced by StratBar(), paint(), and totalLogHeight().

◆ _stratColors

std::map<std::string, DataHolderLib::Color> StratBar::_stratColors
private

Definition at line 55 of file StratBar.h.

Referenced by StratBar(), and paint().

◆ BARWIDTH

const int StratBar::BARWIDTH = 50
staticprivate

The default width of the bar.

Definition at line 52 of file StratBar.h.

Referenced by boundingRect(), and paint().


The documentation for this class was generated from the following files: