Blame view

src/ParamOutputImpl/Plot/LayoutVertical.hh 1.74 KB
fbe3c2bb   Benjamin Renard   First commit
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
/*
 * 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) :
		Layout (panelHeight, panelSpacing, firstPanelHeightFactor, autoExpand, xyRatio),
		_curPanel(0),
		_curYPosition(0),
		_maxWidthConstraintFound(false),
		_computedPanelBounds(),
		_panelYSpacing(0),
 		_firstPanelHeightDelta(0)
	{
	}

	virtual ~LayoutVertical() {
		for (auto panelInfo : _panelsInfo) {
			delete panelInfo;
		}
		_panelsInfo.clear();
	}

	void addPanel (PanelConstraint panelConstraint, double preferedWidth=-1, double preferedHeight=-1);
	void reset (void);
	Bounds & getNextBounds (PanelConstraint panelConstraint);

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;
};

} /* namespace plot */

#endif /* LAYOUTVERTICAL_HH_ */