LayoutVertical.hh
1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
* LayoutVertical.hh
*
* Created on: Sep, 2, 2014
* Author: AKKA
*/
#ifndef LAYOUTVERTICAL_HH_
#define LAYOUTVERTICAL_HH_
#include <iostream>
#include <map>
#include <vector>
#include <string>
#include "Layout.hh"
namespace plot {
class PanelInfo {
public:
PanelInfo (PanelConstraint constraint, double preferedWidth, double preferedHeight, double width, double height) :
_constraint(constraint),
_preferedWidth(preferedWidth),
_preferedHeight(preferedHeight),
_width(width),
_height(height) {
}
PanelConstraint _constraint;
double _preferedWidth;
double _preferedHeight;
double _width;
double _height;
};
/**
* LayoutVertical
*/
class LayoutVertical : public Layout {
public:
LayoutVertical(double panelHeight, double panelSpacing, double firstPanelHeightFactor = 1.0, bool autoExpand = true, double xyRatio = 1.0, bool onlyLowerTimeAxesLegend = false) :
Layout (panelHeight, panelSpacing, firstPanelHeightFactor, autoExpand, xyRatio, onlyLowerTimeAxesLegend),
_curPanel(0),
_curYPosition(0),
_maxWidthConstraintFound(false),
_computedPanelBounds(),
_panelYSpacing(0),
_firstPanelHeightDelta(0)
{
}
virtual ~LayoutVertical() {
for (auto panelInfo : _panelsInfo) {
delete panelInfo;
}
_panelsInfo.clear();
}
void computePanelsPosition (std::vector<boost::shared_ptr<PanelPlotOutput>> _plots);
private:
void computeLayoutSize (double &layoutWidth, double &layoutHeight);
void expand (double ratio);
int _curPanel;
double _curYPosition;
bool _maxWidthConstraintFound;
Bounds _computedPanelBounds;
double _panelYSpacing;
double _firstPanelHeightDelta;
std::vector<PanelInfo *> _panelsInfo;
void addPanel (PanelConstraint panelConstraint, double preferedWidth=-1, double preferedHeight=-1);
void reset (void);
Bounds & getNextBounds (PanelConstraint panelConstraint);
};
} /* namespace plot */
#endif /* LAYOUTVERTICAL_HH_ */