Blame view

src/ParamOutputImpl/Plot/ParameterAxes.cc 5.08 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
/*
 * ParameterAxes.cc
 *
 *  Created on: Dec 5, 2013
 *      Author: amdadev
 */

#ifndef PARAMETERAXES_CC
#define PARAMETERAXES_CC

#include "ParameterAxes.hh"

#include <iosfwd>

#include <iostream>
#include <sstream>
#include <map>
#include <stdexcept>
#include <utility>
#include <cstring>

namespace plot {
/**
 * add a new series properties. If a series with the same index
 * already exist, it will be overridden.
 * _index field of SerieProperties must have been properly set
 * before calling this method.
 * @param series properties to add.
 */
2fc1f2f8   Benjamin Renard   Full rework for s...
30
31
32
SeriesProperties* ParameterAxes::addYSerieProperties(const SeriesProperties& s_) {
	_ySeriesProperties.push_back(s_);
	return &_ySeriesProperties.back();
fbe3c2bb   Benjamin Renard   First commit
33
34
35
36
37
38
39
40
41
42
}

/**
 * adds a new X series. If a series with the same index
 * already exist, it will be overridden.
 * _index field of SerieProperties must have been properly set
 * before calling this method.
 * @param series properties to add, with no drawing settings, just index and xAxis
 */
void ParameterAxes::addXSerieProperties(const XSeriesProperties& s_) {
c46af5a8   Benjamin Renard   Implements multi ...
43
	_xSeriesProperties.push_back(s_);
fbe3c2bb   Benjamin Renard   First commit
44
45
46
47
48
49
50
51
52
53
54
}

void ParameterAxes::addSpectroProperties(std::shared_ptr<SpectroProperties> pSPectroProperties){
	_spectroPropertiesPtr = pSPectroProperties;
}

void ParameterAxes::addColorSerieProperties(const ColorSeriesProperties& s_) {
	_colorSeriesProperties.push_back(s_);
}

/**
fbe3c2bb   Benjamin Renard   First commit
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 * Get the list of indexes used for a parameter
 */
std::vector<AMDA::Common::ParameterIndexComponent> ParameterAxes::getParamUsedIndexes(std::string paramId_) {
	std::vector<AMDA::Common::ParameterIndexComponent> keyset;

	if (_spectroPropertiesPtr != nullptr)
	{
		if (_spectroPropertiesPtr->getParamId() == paramId_)
		{
			keyset.push_back(AMDA::Common::ParameterIndexComponent(-1,-1));
			return keyset;
		}

	}

2fc1f2f8   Benjamin Renard   Full rework for s...
70
	for (std::vector<SeriesProperties>::iterator it =
fbe3c2bb   Benjamin Renard   First commit
71
72
73
			_ySeriesProperties.begin(); it != _ySeriesProperties.end(); ++it) {
			// add index only if serie has same paramId to not store
			// unused values
2fc1f2f8   Benjamin Renard   Full rework for s...
74
75
		if (it->getParamId() == paramId_) {
			keyset.push_back(it->getIndex());
fbe3c2bb   Benjamin Renard   First commit
76
77
78
		}
	}

c46af5a8   Benjamin Renard   Implements multi ...
79
	for (std::vector<XSeriesProperties>::iterator it =
fbe3c2bb   Benjamin Renard   First commit
80
81
			_xSeriesProperties.begin(); it != _xSeriesProperties.end(); ++it) {
			// same remark
c46af5a8   Benjamin Renard   Implements multi ...
82
83
		if (it->getParamId() == paramId_) {
			keyset.push_back(it->getIndex());
fbe3c2bb   Benjamin Renard   First commit
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
		}
	}

	for (std::vector<ColorSeriesProperties>::iterator it =
			_colorSeriesProperties.begin(); it != _colorSeriesProperties.end(); ++it) {
			// same remark
		for (auto itColorParam : it->getColorParamIds())
		{
			if (itColorParam.second == paramId_)
				keyset.push_back(it->getIndex());
		}
	}

	return keyset;
}

/**
fbe3c2bb   Benjamin Renard   First commit
101
102
103
104
105
106
107
108
109
110
111
112
 * Get color serie properties by id
 */
 ColorSeriesProperties& ParameterAxes::getColorSeriePropertiesById(int id_) {
	for (auto &prop : _colorSeriesProperties)
		if (prop.getId() == id_)
			return prop;

	std::ostringstream errmsg;
	errmsg << "id '" << id_ << "' not found." << std::endl;
	throw std::out_of_range(errmsg.str());
}

c46af5a8   Benjamin Renard   Implements multi ...
113
114
115
116
117
118
119
120
121
122
123
124
125
/**
 * Get x serie properties by id
 */
XSeriesProperties& ParameterAxes::getXSeriePropertiesById(int id_) {
        for (auto &prop : _xSeriesProperties)
                if (prop.getId() == id_)
                        return prop;

        std::ostringstream errmsg;
        errmsg << "id '" << id_ << "' not found." << std::endl;
        throw std::out_of_range(errmsg.str());
}

fbe3c2bb   Benjamin Renard   First commit
126
127
128
129
130
131
132
133
134
/*
 * Dumps properties for test.
 */
void ParameterAxes::dump(std::ostream& out_, std::string& prefix_) {
	out_ << "[DEFAULT PARAMETER AXES]" << std::endl;
	std::string subPrefix = prefix_ + "default";
	_defaultProperties.dump(out_, subPrefix);

	std::ostringstream os;
2fc1f2f8   Benjamin Renard   Full rework for s...
135
	std::vector<SeriesProperties>::iterator it;
fbe3c2bb   Benjamin Renard   First commit
136
137
138
	for (it = _ySeriesProperties.begin(); it != _ySeriesProperties.end();
			++it) {
		os.str("");
2fc1f2f8   Benjamin Renard   Full rework for s...
139
		os << prefix_ << "yserie" << ".";
fbe3c2bb   Benjamin Renard   First commit
140
		subPrefix = os.str();
2fc1f2f8   Benjamin Renard   Full rework for s...
141
		it->dump(out_, subPrefix);
fbe3c2bb   Benjamin Renard   First commit
142
143
	}

c46af5a8   Benjamin Renard   Implements multi ...
144
	std::vector<XSeriesProperties>::iterator xit;
fbe3c2bb   Benjamin Renard   First commit
145
146
147
	for (xit = _xSeriesProperties.begin(); xit != _xSeriesProperties.end();
			++xit) {
		os.str("");
2fc1f2f8   Benjamin Renard   Full rework for s...
148
		os << prefix_ << "xserie" << ".";
fbe3c2bb   Benjamin Renard   First commit
149
		subPrefix = os.str();
c46af5a8   Benjamin Renard   Implements multi ...
150
		xit->dump(out_, subPrefix);
fbe3c2bb   Benjamin Renard   First commit
151
152
153
154
155
156
157
158
159
160
161
162
163
164
	}

	if (_spectroPropertiesPtr != nullptr)
	{
		os.str("");
		os << prefix_ << "spectro" << ".";
		subPrefix = os.str();
		_spectroPropertiesPtr->dump(out_, subPrefix);
	}

	std::vector<ColorSeriesProperties>::iterator colorit;
	for (colorit = _colorSeriesProperties.begin(); colorit != _colorSeriesProperties.end();
			++colorit) {
		os.str("");
2fc1f2f8   Benjamin Renard   Full rework for s...
165
		os << prefix_ << "color"  << ".";
fbe3c2bb   Benjamin Renard   First commit
166
167
168
169
170
171
172
173
174
175
176
		subPrefix = os.str();
		colorit->dump(out_, subPrefix);
	}
}

std::ostream& operator<<(std::ostream& out_, const ParameterAxes& prop_) {
	out_ << "[PARAMETER AXES]" << std::endl;
	out_ << "{" << std::endl;
	out_ << "  name =" << prop_._originalParamId << std::endl;
	out_ << "  default properties = " << prop_._defaultProperties << std::endl;
	out_ << "  {" << std::endl;
2fc1f2f8   Benjamin Renard   Full rework for s...
177
	const std::vector<SeriesProperties>::const_iterator end =
fbe3c2bb   Benjamin Renard   First commit
178
			prop_._ySeriesProperties.end();
2fc1f2f8   Benjamin Renard   Full rework for s...
179
	std::vector<SeriesProperties>::const_iterator it;
fbe3c2bb   Benjamin Renard   First commit
180
	for (it = prop_._ySeriesProperties.begin(); it != end; ++it) {
2fc1f2f8   Benjamin Renard   Full rework for s...
181
		out_ << (*it) << std::endl;
fbe3c2bb   Benjamin Renard   First commit
182
183
184
185
186
187
188
189
190
	}
	out_ << "  }" << std::endl;
	out_ << "}" << std::endl;
	return out_;
}

} // end namespace plot

#endif // PARAMETERAXES_CC