Blame view

src/ParamOutputImpl/Plot/AxisLegendManager.cc 14.7 KB
fbe3c2bb   Benjamin Renard   First commit
1
2
#include "AxisLegendManager.hh"

fbe3c2bb   Benjamin Renard   First commit
3
4
5
6
7
using namespace AMDA::Info;

namespace plot
{

5ee90a58   Benjamin Renard   Use AxisLegendMan...
8
9
10
11
12
13
14
15
void AxisLegendManager::configureXAxisLegendForSeries(
		XYPlot* plot)
{
	// Build list of all indexes used by each parameters for each x axes
	std::map<std::string, AxisParamsComponents> axesParamsComponents;

	SeriesProperties lSeriesProperties;
	for (auto param: plot->_parameterAxesList) {
2fc1f2f8   Benjamin Renard   Full rework for s...
16
		for(auto lSeriesProperties : param.getYSeriePropertiesList()) {
5ee90a58   Benjamin Renard   Use AxisLegendMan...
17
18
			if(!lSeriesProperties.hasYAxis() || !lSeriesProperties.hasXAxis())
				continue;
5ee90a58   Benjamin Renard   Use AxisLegendMan...
19

c46af5a8   Benjamin Renard   Implements multi ...
20
			ParameterAxes* xParameter = plot->getParameterAxesByXSerieId(lSeriesProperties.getXId());
5ee90a58   Benjamin Renard   Use AxisLegendMan...
21

c46af5a8   Benjamin Renard   Implements multi ...
22
			XSeriesProperties xSerie = xParameter->getXSeriePropertiesById(lSeriesProperties.getXId());
5ee90a58   Benjamin Renard   Use AxisLegendMan...
23

c46af5a8   Benjamin Renard   Implements multi ...
24
			std::string xAxisId = lSeriesProperties.getXAxisId();
5ee90a58   Benjamin Renard   Use AxisLegendMan...
25
26
27
28
29
30

			boost::shared_ptr<Axis> lXAxis = plot->_panel->getAxis(xAxisId);
			if (lXAxis.get() == nullptr) {
				continue;
			}

8bb0f02b   Benjamin Renard   Set colors in axi...
31
			ParameterIndexComponentColor xIndex = ParameterIndexComponentColor(xSerie.getIndex(), lXAxis->_color);
c46af5a8   Benjamin Renard   Implements multi ...
32
			pushComponentInList(xSerie.getParamId(), xIndex, axesParamsComponents[xAxisId]);
5ee90a58   Benjamin Renard   Use AxisLegendMan...
33
34
35
36
37
38
39
40
41
42
		}
	}

	std::list<std::string> legendLines;
	for (auto axisParamsComponents : axesParamsComponents) {
		boost::shared_ptr<Axis> lXAxis = plot->_panel->getAxis(axisParamsComponents.first);
		setAxisLegendForSeries(plot, lXAxis, axisParamsComponents.second);
        }
}

c2fa3b5d   Benjamin Renard   Rework of legend ...
43
44
void AxisLegendManager::configureYAxisLegendForSpectro(
                PanelPlotOutput* plot)
fbe3c2bb   Benjamin Renard   First commit
45
{
c2fa3b5d   Benjamin Renard   Rework of legend ...
46
47
48
49
	for (auto param: plot->_parameterAxesList) {
		std::shared_ptr<SpectroProperties> spectroPropertiesPtr = param.getSpectroProperties();
		if (spectroPropertiesPtr == nullptr)
			continue; //no spectro defined
fbe3c2bb   Benjamin Renard   First commit
50

c2fa3b5d   Benjamin Renard   Rework of legend ...
51
52
		if(!spectroPropertiesPtr->hasYAxis())
			continue;
fbe3c2bb   Benjamin Renard   First commit
53

c2fa3b5d   Benjamin Renard   Rework of legend ...
54
55
56
57
		std::string yAxisId = spectroPropertiesPtr->getYAxisId();
		boost::shared_ptr<Axis> lYAxis = plot->_panel->getAxis(yAxisId);
		if (lYAxis.get() == nullptr)
			continue;
fbe3c2bb   Benjamin Renard   First commit
58

df45df5e   Benjamin Renard   Introduce AxisLeg...
59
		if (!lYAxis->_legend.isEmpty())
c2fa3b5d   Benjamin Renard   Rework of legend ...
60
			continue;
5ee90a58   Benjamin Renard   Use AxisLegendMan...
61
62
		
		setAxisLegendForTable(plot, lYAxis, param._originalParamId, spectroPropertiesPtr->getParamId(), spectroPropertiesPtr->getIndexes(), spectroPropertiesPtr->getRelatedDim());
c2fa3b5d   Benjamin Renard   Rework of legend ...
63
		return;
fbe3c2bb   Benjamin Renard   First commit
64
	}
c2fa3b5d   Benjamin Renard   Rework of legend ...
65
66
67
68
69
70
}

void AxisLegendManager::configureYAxisLegendForSeries(
		PanelPlotOutput* plot)
{
	SeriesProperties lSeriesProperties;
fbe3c2bb   Benjamin Renard   First commit
71

8bb0f02b   Benjamin Renard   Set colors in axi...
72
73
74
	// Compute nb series to draw by y axis
	std::map<std::string,int> nbSeriesByYAxisMap = plot->getNbSeriesByYAxis();

c2fa3b5d   Benjamin Renard   Rework of legend ...
75
76
	// Build list of all indexes used by each parameters for each y axes
	std::map<std::string, AxisParamsComponents> axesParamsComponents;
8bb0f02b   Benjamin Renard   Set colors in axi...
77
78
79
	if (!plot->_panel->_page->_superposeMode) {
		plot->resetAutomaticSerieColorCursor();
	}
fbe3c2bb   Benjamin Renard   First commit
80
81
	for (auto param: plot->_parameterAxesList)
	{
2fc1f2f8   Benjamin Renard   Full rework for s...
82
		for(auto lSeriesProperties : param.getYSeriePropertiesList()) {
fbe3c2bb   Benjamin Renard   First commit
83
84
85
			if(!lSeriesProperties.hasYAxis())
				continue;

8bb0f02b   Benjamin Renard   Set colors in axi...
86
87
			bool moreThanOneSerieForAxis = (nbSeriesByYAxisMap[lSeriesProperties.getYAxisId()] > 1);

fbe3c2bb   Benjamin Renard   First commit
88
			std::string yAxisId = lSeriesProperties.getYAxisId();
fbe3c2bb   Benjamin Renard   First commit
89
90
			boost::shared_ptr<Axis> lYAxis = plot->_panel->getAxis(yAxisId);
			if (lYAxis.get() == nullptr) {
fbe3c2bb   Benjamin Renard   First commit
91
				continue;
c2fa3b5d   Benjamin Renard   Rework of legend ...
92
 			}
fbe3c2bb   Benjamin Renard   First commit
93

2fc1f2f8   Benjamin Renard   Full rework for s...
94
95
96
97
98
99
100
			for (auto index : lSeriesProperties.getIndexList(plot->_pParameterValues)) {
				Color compLegendColor = lYAxis->_color;
				if (moreThanOneSerieForAxis && (lSeriesProperties.getColorSerieId() == -1) && (!plot->_panel->_page->_superposeMode)) {
					compLegendColor = plot->getSerieLineColor(lSeriesProperties, moreThanOneSerieForAxis);
				}
				ParameterIndexComponentColor yIndex = ParameterIndexComponentColor(index, compLegendColor);
				pushComponentInList(lSeriesProperties.getParamId(), yIndex, axesParamsComponents[yAxisId]);
8bb0f02b   Benjamin Renard   Set colors in axi...
101
			}
c2fa3b5d   Benjamin Renard   Rework of legend ...
102
103
		}
	}
8bb0f02b   Benjamin Renard   Set colors in axi...
104
105
106
	if (!plot->_panel->_page->_superposeMode) {
		plot->resetAutomaticSerieColorCursor();
	}
fbe3c2bb   Benjamin Renard   First commit
107

c2fa3b5d   Benjamin Renard   Rework of legend ...
108
109
110
111
112
113
	std::list<std::string> legendLines;
	for (auto axisParamsComponents : axesParamsComponents) {
		boost::shared_ptr<Axis> lYAxis = plot->_panel->getAxis(axisParamsComponents.first);
		setAxisLegendForSeries(plot, lYAxis, axisParamsComponents.second);
	}
}
fbe3c2bb   Benjamin Renard   First commit
114

5ee90a58   Benjamin Renard   Use AxisLegendMan...
115
116
117
118
119
120
121
122
123
124
125
126
127
128
void AxisLegendManager::configureColorAxisLegendForSeries(
		PanelPlotOutput* plot)
{
	SeriesProperties lSeriesProperties;
	ColorSeriesProperties lColorSerieProperties;
	boost::shared_ptr<Axis> lZAxis = plot->_panel->getColorAxis();
	
	if (lZAxis.get() == nullptr) {
		return;
 	}

	// Build list of all indexes used by each parameters for each y axes
	AxisParamsComponents axisParamsComponents;
	for (auto param: plot->_parameterAxesList) {
2fc1f2f8   Benjamin Renard   Full rework for s...
129
		for(auto lSeriesProperties : param.getYSeriePropertiesList()) {
5ee90a58   Benjamin Renard   Use AxisLegendMan...
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
			if(!lSeriesProperties.hasYAxis())
				continue;

			std::string yParamId = lSeriesProperties.getParamId();

			//check if a colored param is defined for this serie
			if(lSeriesProperties.getColorParamId().empty())
				continue;

			ParameterAxes* colorSerieParameterAxes = plot->getParameterAxesByColorSerieId(lSeriesProperties.getColorSerieId());

			if (colorSerieParameterAxes == NULL)
				continue;

			lColorSerieProperties = colorSerieParameterAxes->getColorSeriePropertiesById(lSeriesProperties.getColorSerieId());

8bb0f02b   Benjamin Renard   Set colors in axi...
146
			ParameterIndexComponentColor colorSerieIndex = ParameterIndexComponentColor(-1, -1, lZAxis->_color);
5ee90a58   Benjamin Renard   Use AxisLegendMan...
147
			if (lColorSerieProperties.getIndex() > -1)
8bb0f02b   Benjamin Renard   Set colors in axi...
148
				colorSerieIndex = ParameterIndexComponentColor(lColorSerieProperties.getIndex(), -1, lZAxis->_color);
5ee90a58   Benjamin Renard   Use AxisLegendMan...
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
			pushComponentInList(lColorSerieProperties.getColorParamIds()[yParamId], colorSerieIndex, axisParamsComponents);
		}
	}

	setAxisLegendForSeries(plot, lZAxis, axisParamsComponents);
}

void AxisLegendManager::configureColorAxisLegendForSpectro(
		PanelPlotOutput* plot)
{
	boost::shared_ptr<Axis> lZAxis = plot->_panel->getColorAxis();
		
	if (lZAxis.get() == nullptr) {
		return;
 	}

	for (auto param: plot->_parameterAxesList) {
		std::shared_ptr<SpectroProperties> spectroPropertiesPtr = param.getSpectroProperties();
		if (spectroPropertiesPtr == nullptr)
			continue; //no spectro defined

		if(!spectroPropertiesPtr->hasZAxis())
			continue;
		
		setAxisLegendForSpectro(plot, lZAxis, param._originalParamId);
		break;
	}
}

8bb0f02b   Benjamin Renard   Set colors in axi...
178
179
void AxisLegendManager::pushComponentInList(std::string paramId, ParameterIndexComponentColor& index, AxisParamsComponents& axisParamsComponents) {
	if (index.getDim1Index() == -1 && index.getDim2Index() == -1) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
180
181
182
183
184
185
		//All indexes of this parameter are used
		axisParamsComponents[paramId].clear();
		axisParamsComponents[paramId].push_back(index);
	}
	else {
		if (axisParamsComponents[paramId].size() > 0) {
8bb0f02b   Benjamin Renard   Set colors in axi...
186
			if (axisParamsComponents[paramId].front().getDim1Index() == -1 && axisParamsComponents[paramId].front().getDim2Index() == -1) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
187
188
				//Skip. All components already defined for this paramter on this axis
				return;
fbe3c2bb   Benjamin Renard   First commit
189
			}
c2fa3b5d   Benjamin Renard   Rework of legend ...
190
		}
8bb0f02b   Benjamin Renard   Set colors in axi...
191
192
193
194
195
		for (auto crtIndex : axisParamsComponents[paramId]) {
			if ((crtIndex.getDim1Index() == index.getDim1Index()) && (crtIndex.getDim2Index() == index.getDim2Index())) {
				//Component already exists
				return;
			}
c2fa3b5d   Benjamin Renard   Rework of legend ...
196
		}
8bb0f02b   Benjamin Renard   Set colors in axi...
197
198
		//Add this components for this axis
		axisParamsComponents[paramId].push_back(index);
c2fa3b5d   Benjamin Renard   Rework of legend ...
199
	}
fbe3c2bb   Benjamin Renard   First commit
200

c2fa3b5d   Benjamin Renard   Rework of legend ...
201
}
fbe3c2bb   Benjamin Renard   First commit
202

c2fa3b5d   Benjamin Renard   Rework of legend ...
203
void AxisLegendManager::setAxisLegendForSeries(PanelPlotOutput* plot, boost::shared_ptr<Axis>& pAxis, AxisParamsComponents& axisParamsComponents) {
df45df5e   Benjamin Renard   Introduce AxisLeg...
204
	if (pAxis == nullptr || !pAxis->_legend.isEmpty()) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
205
206
		return;
	}
fbe3c2bb   Benjamin Renard   First commit
207

c2fa3b5d   Benjamin Renard   Rework of legend ...
208
209
	// Retrieve ParamInfo Manager
	ParamMgr* piMgr = ParamMgr::getInstance();
fbe3c2bb   Benjamin Renard   First commit
210

c2fa3b5d   Benjamin Renard   Rework of legend ...
211
212
213
214
215
	for (auto paramsComponents : axisParamsComponents) {
		ParameterSPtr p = plot->_parameterManager.getParameter(paramsComponents.first);
		ParamInfoSPtr   paramInfo = piMgr->getParamInfoFromId(p->getInfoId());
		if (paramsComponents.second.size() == p->getDataWriterTemplate()->getParamData()->getDim1() * p->getDataWriterTemplate()->getParamData()->getDim2()) {
			//All components of this parameter are used by this axis => merge
8bb0f02b   Benjamin Renard   Set colors in axi...
216
			Color color = paramsComponents.second.front().getColor();
c2fa3b5d   Benjamin Renard   Rework of legend ...
217
			paramsComponents.second.clear();
8bb0f02b   Benjamin Renard   Set colors in axi...
218
			paramsComponents.second.push_back(ParameterIndexComponentColor(-1,-1, color));
c2fa3b5d   Benjamin Renard   Rework of legend ...
219
		}
8c8ac7bf   Benjamin Renard   Write mission/ins...
220
		bool isFirstComponent = true;
c2fa3b5d   Benjamin Renard   Rework of legend ...
221
222
223
		for (auto components : paramsComponents.second) {
			if (paramInfo == nullptr)
				continue;
8bb0f02b   Benjamin Renard   Set colors in axi...
224
225
226
227
228
229
230
231
232
233
234
235
			Label label(pAxis->_legend.getFont(), components.getColor());
			if (axisParamsComponents.size() == 1) {
				if (isFirstComponent) {
					std::string info = getMissionInstrumentInfo(paramInfo);
					if (!info.empty()) {
						label._text = info;
						addBreakLine(label._text);
					}
				}
			}
			else {
				std::string info = getMissionInfo(paramInfo);
8c8ac7bf   Benjamin Renard   Write mission/ins...
236
				if (!info.empty()) {
8bb0f02b   Benjamin Renard   Set colors in axi...
237
					label._text = info + ", ";
8c8ac7bf   Benjamin Renard   Write mission/ins...
238
239
				}
			}
df45df5e   Benjamin Renard   Introduce AxisLeg...
240
			label._text += getParamLegend(paramInfo, components);
8bb0f02b   Benjamin Renard   Set colors in axi...
241
			pAxis->_legend.pushLabel(label);
8c8ac7bf   Benjamin Renard   Write mission/ins...
242
			isFirstComponent = false;
fbe3c2bb   Benjamin Renard   First commit
243
		}
fbe3c2bb   Benjamin Renard   First commit
244
245
246
	}
}

5ee90a58   Benjamin Renard   Use AxisLegendMan...
247
void AxisLegendManager::setAxisLegendForSpectro(PanelPlotOutput* plot, boost::shared_ptr<Axis>& pAxis, std::string originalParamId) {
df45df5e   Benjamin Renard   Introduce AxisLeg...
248
	if (pAxis == nullptr || !pAxis->_legend.isEmpty()) {
5ee90a58   Benjamin Renard   Use AxisLegendMan...
249
		return;
fbe3c2bb   Benjamin Renard   First commit
250
	}
fbe3c2bb   Benjamin Renard   First commit
251

5ee90a58   Benjamin Renard   Use AxisLegendMan...
252
253
254
255
256
257
258
	// Retrieve ParamInfo Manager
	ParamMgr* piMgr = ParamMgr::getInstance();
	
	ParameterSPtr p = plot->_parameterManager.getParameter(originalParamId);
	AMDA::Info::ParamInfoSPtr paramInfo = piMgr->getParamInfoFromId(p->getInfoId());
	if (paramInfo == nullptr)
		return;
c2fa3b5d   Benjamin Renard   Rework of legend ...
259

df45df5e   Benjamin Renard   Introduce AxisLeg...
260
261
262
263
	Label label(pAxis->_legend.getFont(), pAxis->_legend.getColor());
	addInfoPart(label._text, paramInfo->getShortName());
	addInfoPart(label._text, paramInfo->getUnits());
	pAxis->_legend.setLabel(label);
c2fa3b5d   Benjamin Renard   Rework of legend ...
264
265
}

5ee90a58   Benjamin Renard   Use AxisLegendMan...
266
void AxisLegendManager::setAxisLegendForTable(PanelPlotOutput* plot, boost::shared_ptr<Axis>& pAxis, std::string originalParamId, std::string paramId, AMDA::Common::ParameterIndexComponentList& indexes, int relatedDim) {
df45df5e   Benjamin Renard   Introduce AxisLeg...
267
	if (pAxis == nullptr || !pAxis->_legend.isEmpty()) {
5ee90a58   Benjamin Renard   Use AxisLegendMan...
268
269
		return;
	}
fbe3c2bb   Benjamin Renard   First commit
270

5ee90a58   Benjamin Renard   Use AxisLegendMan...
271
272
273
274
275
276
277
278
	// Retrieve ParamInfo Manager
	ParamMgr* piMgr = ParamMgr::getInstance();
	
	ParameterSPtr p = plot->_parameterManager.getParameter(originalParamId);
	AMDA::Info::ParamInfoSPtr paramInfo = piMgr->getParamInfoFromId(p->getInfoId());
	
	if (paramInfo == nullptr)
			return;
fbe3c2bb   Benjamin Renard   First commit
279

df45df5e   Benjamin Renard   Introduce AxisLeg...
280
	Label label(pAxis->_legend.getFont(), pAxis->_legend.getColor());
fb96d5d5   Benjamin Renard   Add mission name ...
281
282
	std::string info = getMissionInstrumentInfo(paramInfo);
	if (!info.empty()) {
df45df5e   Benjamin Renard   Introduce AxisLeg...
283
284
		addInfoPart(label._text, info);
		addBreakLine(label._text);
fb96d5d5   Benjamin Renard   Add mission name ...
285
286
	}

5ee90a58   Benjamin Renard   Use AxisLegendMan...
287
288
	boost::shared_ptr<AMDA::Info::ParamTable> tableSPtr;
	tableSPtr = paramInfo->getTable(relatedDim);
fbe3c2bb   Benjamin Renard   First commit
289

5ee90a58   Benjamin Renard   Use AxisLegendMan...
290
291
292
293
	if (tableSPtr == nullptr) {
		std::string tableInfo = "Table ";
		tableInfo += std::to_string(relatedDim);
		tableInfo += " indexes";
df45df5e   Benjamin Renard   Introduce AxisLeg...
294
295
		addInfoPart(label._text, tableInfo);
		pAxis->_legend.pushLabel(label);
5ee90a58   Benjamin Renard   Use AxisLegendMan...
296
297
		return;
	}
fbe3c2bb   Benjamin Renard   First commit
298

5ee90a58   Benjamin Renard   Use AxisLegendMan...
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
	if (((*plot->_pParameterValues)[paramId].getDim1Size() > 0) &&
		((*plot->_pParameterValues)[paramId].getDim2Size() > 0) &&
		!indexes.empty())
	{
		boost::shared_ptr<AMDA::Info::ParamTable> otherTableSPtr;
		int otherDimIndex;
		if (relatedDim == 0)
		{
			otherTableSPtr = paramInfo->getTable(1);
			otherDimIndex = indexes.front().getDim2Index();
		}
		else
		{
			otherTableSPtr = paramInfo->getTable(0);
			otherDimIndex = indexes.front().getDim1Index();
		}
e7ea756d   Benjamin Renard   Implements tables...
315
		if ((otherTableSPtr != nullptr) && !otherTableSPtr->isVariable(&plot->_parameterManager))
5ee90a58   Benjamin Renard   Use AxisLegendMan...
316
		{
e7ea756d   Benjamin Renard   Implements tables...
317
			if (otherTableSPtr->getName(&plot->_parameterManager).empty())
df45df5e   Benjamin Renard   Introduce AxisLeg...
318
				addInfoPart(label._text, "Table bounds");
5ee90a58   Benjamin Renard   Use AxisLegendMan...
319
			else
e7ea756d   Benjamin Renard   Implements tables...
320
				addInfoPart(label._text, otherTableSPtr->getName(&plot->_parameterManager));
5ee90a58   Benjamin Renard   Use AxisLegendMan...
321
322
				
			AMDA::Info::t_TableBound crtBound = otherTableSPtr->getBound(&plot->_parameterManager, otherDimIndex);
df45df5e   Benjamin Renard   Introduce AxisLeg...
323
			addBoundsPart(label._text, crtBound.min, crtBound.max);
e7ea756d   Benjamin Renard   Implements tables...
324
			addInfoPart(label._text, otherTableSPtr->getUnits(&plot->_parameterManager));
5ee90a58   Benjamin Renard   Use AxisLegendMan...
325
326
327
328
329
		}
		else
		{
			std::string part = "Table Index: ";
			part += otherDimIndex;
df45df5e   Benjamin Renard   Introduce AxisLeg...
330
			addInfoPart(label._text, part);
c2fa3b5d   Benjamin Renard   Rework of legend ...
331
		}
df45df5e   Benjamin Renard   Introduce AxisLeg...
332
		addBreakLine(label._text);
c2fa3b5d   Benjamin Renard   Rework of legend ...
333
	}
e7ea756d   Benjamin Renard   Implements tables...
334
335
	addInfoPart(label._text, tableSPtr->getName(&plot->_parameterManager));
	addInfoPart(label._text, tableSPtr->getUnits(&plot->_parameterManager));
df45df5e   Benjamin Renard   Introduce AxisLeg...
336
	pAxis->_legend.pushLabel(label);
c2fa3b5d   Benjamin Renard   Rework of legend ...
337
}
fbe3c2bb   Benjamin Renard   First commit
338

c2fa3b5d   Benjamin Renard   Rework of legend ...
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
void AxisLegendManager::addInfoPart(std::string& legend, std::string info) {
	if (!info.empty()) {
		if (!legend.empty()) {
			if (legend.length() >= Label::DELIMITER.length()) {
				if (legend.compare(legend.length() - Label::DELIMITER.length(), Label::DELIMITER.length(), Label::DELIMITER) != 0) {
					legend += ", ";
				}
			}
			else {
				legend += ", ";
			}
		}
		legend += info;
	}
}
fbe3c2bb   Benjamin Renard   First commit
354

8bb0f02b   Benjamin Renard   Set colors in axi...
355
void AxisLegendManager::addIndexPart(std::string& legend, ParameterIndexComponentColor& index) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
356
357
358
359
360
361
362
363
	legend += "[";
	legend += std::to_string(index.getDim1Index());
	if (index.getDim2Index() != -1) {
		legend += ",";
		legend += std::to_string(index.getDim2Index());
	}
	legend += "]";
}
fbe3c2bb   Benjamin Renard   First commit
364

c2fa3b5d   Benjamin Renard   Rework of legend ...
365
366
367
368
369
void AxisLegendManager::addIndexPart(std::string& legend, int index) {
	legend += "[";
	legend += std::to_string(index);
	legend += "]";
}
fbe3c2bb   Benjamin Renard   First commit
370

c2fa3b5d   Benjamin Renard   Rework of legend ...
371
372
void AxisLegendManager::addBoundsPart(std::string& legend, PLFLT min, PLFLT max) {
	legend += " ";
fbe3c2bb   Benjamin Renard   First commit
373

c2fa3b5d   Benjamin Renard   Rework of legend ...
374
375
376
377
	PLINT axis = 0;
	PLPointer data = NULL;
	char minCount[1024];
	char maxCount[1024];
fbe3c2bb   Benjamin Renard   First commit
378

c2fa3b5d   Benjamin Renard   Rework of legend ...
379
380
	generateDigitalLabel(axis, min, minCount, 1024, data);
	generateDigitalLabel(axis, max, maxCount, 1024, data);
fbe3c2bb   Benjamin Renard   First commit
381

c2fa3b5d   Benjamin Renard   Rework of legend ...
382
383
384
385
	legend += std::string(minCount);
	legend += ", ";
	legend += std::string(maxCount);
}
fbe3c2bb   Benjamin Renard   First commit
386

c2fa3b5d   Benjamin Renard   Rework of legend ...
387
388
389
void AxisLegendManager::addBreakLine(std::string& legend) {
	if (!legend.empty()) {
		legend += Label::DELIMITER;
fbe3c2bb   Benjamin Renard   First commit
390
	}
c2fa3b5d   Benjamin Renard   Rework of legend ...
391
}
fbe3c2bb   Benjamin Renard   First commit
392

8bb0f02b   Benjamin Renard   Set colors in axi...
393
std::string AxisLegendManager::getParamLegend(AMDA::Info::ParamInfoSPtr paramInfo, ParameterIndexComponentColor& index) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
394
395
396
397
	std::string legend;
	addInfoPart(legend, paramInfo->getShortName());

	if ((index.getDim1Index() != -1) || (index.getDim2Index() != -1)) {
8bb0f02b   Benjamin Renard   Set colors in axi...
398
399
400
		AMDA::Common::ParameterIndexComponent paramIndex(index.getDim1Index(), index.getDim2Index());
		if (paramInfo->getComponents(paramIndex).empty() == false)
			addInfoPart(legend, paramInfo->getComponents(paramIndex));
c2fa3b5d   Benjamin Renard   Rework of legend ...
401
		else
fbe3c2bb   Benjamin Renard   First commit
402
		{
c2fa3b5d   Benjamin Renard   Rework of legend ...
403
404
			addInfoPart(legend, paramInfo->getShortName());
			addIndexPart(legend, index);
fbe3c2bb   Benjamin Renard   First commit
405
		}
fbe3c2bb   Benjamin Renard   First commit
406
	}
c2fa3b5d   Benjamin Renard   Rework of legend ...
407
408
409
410
411
412
413

	addInfoPart(legend, paramInfo->getUnits());
	addInfoPart(legend, paramInfo->getCoordinatesSystem());
	
	return legend;
}

5ee90a58   Benjamin Renard   Use AxisLegendMan...
414
/*std::string AxisLegendManager::getParamLegend(AMDA::Info::ParamInfoSPtr paramInfo, int index) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
415
416
417
	std::string legend;
	addInfoPart(legend, paramInfo->getShortName());

5ee90a58   Benjamin Renard   Use AxisLegendMan...
418
	if ((index.getDim1Index() != -1) || (index.getDim2Index() != -1)) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
419
420
421
422
423
424
425
426
427
428
429
                if (paramInfo->getComponents(index).empty() == false)
                        addInfoPart(legend, paramInfo->getComponents(index));
                else
                {
                        addInfoPart(legend, paramInfo->getShortName());
                        addIndexPart(legend, index);
                }
        }

        addInfoPart(legend, paramInfo->getUnits());
        addInfoPart(legend, paramInfo->getCoordinatesSystem());
5ee90a58   Benjamin Renard   Use AxisLegendMan...
430

c2fa3b5d   Benjamin Renard   Rework of legend ...
431
        return legend;
5ee90a58   Benjamin Renard   Use AxisLegendMan...
432
}*/
fbe3c2bb   Benjamin Renard   First commit
433

8c8ac7bf   Benjamin Renard   Write mission/ins...
434
435
436
437
438
439
440
441
442
std::string AxisLegendManager::getMissionInstrumentInfo(AMDA::Info::ParamInfoSPtr paramInfo) {
	std::string info = paramInfo->getInstrumentId();
	if (info.empty())
		return info;
	std::replace(info.begin(), info.end(), '_', ' ');
	std::transform(info.begin(), info.end(), info.begin(), ::toupper);
	return info;
}

8bb0f02b   Benjamin Renard   Set colors in axi...
443
444
445
446
447
448
449
450
451
452
453
std::string AxisLegendManager::getMissionInfo(AMDA::Info::ParamInfoSPtr paramInfo) {
	std::string info = paramInfo->getInstrumentId();
	if (info.empty())
		return info;
	if (info.find('_') != std::string::npos) {
		info = info.substr(0, info.find('_'));
	}
	std::transform(info.begin(), info.end(), info.begin(), ::toupper);
	return info;
}

fbe3c2bb   Benjamin Renard   First commit
454
} /* namespace plot */