Blame view

src/ParamOutputImpl/Plot/AxisLegendManager.cc 14.8 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
16
17
18
19
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) {
		for(auto index: param.getYSerieIndexList(plot->_pParameterValues)) {
			lSeriesProperties = param.getYSeriePropertiesAt(index);
			if(!lSeriesProperties.hasYAxis() || !lSeriesProperties.hasXAxis())
				continue;
5ee90a58   Benjamin Renard   Use AxisLegendMan...
20

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

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

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

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

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

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

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

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

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

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

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

c2fa3b5d   Benjamin Renard   Rework of legend ...
76
77
	// 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...
78
79
80
	if (!plot->_panel->_page->_superposeMode) {
		plot->resetAutomaticSerieColorCursor();
	}
fbe3c2bb   Benjamin Renard   First commit
81
82
	for (auto param: plot->_parameterAxesList)
	{
fbe3c2bb   Benjamin Renard   First commit
83
84
85
86
87
88
		for(auto index: param.getYSerieIndexList(plot->_pParameterValues))
		{
			lSeriesProperties = param.getYSeriePropertiesAt(index);
			if(!lSeriesProperties.hasYAxis())
				continue;

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

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

8bb0f02b   Benjamin Renard   Set colors in axi...
97
98
99
100
101
102
			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]);
c2fa3b5d   Benjamin Renard   Rework of legend ...
103
104
		}
	}
8bb0f02b   Benjamin Renard   Set colors in axi...
105
106
107
	if (!plot->_panel->_page->_superposeMode) {
		plot->resetAutomaticSerieColorCursor();
	}
fbe3c2bb   Benjamin Renard   First commit
108

c2fa3b5d   Benjamin Renard   Rework of legend ...
109
110
111
112
113
114
	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
115

5ee90a58   Benjamin Renard   Use AxisLegendMan...
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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) {
		for(auto index: param.getYSerieIndexList(plot->_pParameterValues)) {
			lSeriesProperties = param.getYSeriePropertiesAt(index);

			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...
149
			ParameterIndexComponentColor colorSerieIndex = ParameterIndexComponentColor(-1, -1, lZAxis->_color);
5ee90a58   Benjamin Renard   Use AxisLegendMan...
150
			if (lColorSerieProperties.getIndex() > -1)
8bb0f02b   Benjamin Renard   Set colors in axi...
151
				colorSerieIndex = ParameterIndexComponentColor(lColorSerieProperties.getIndex(), -1, lZAxis->_color);
5ee90a58   Benjamin Renard   Use AxisLegendMan...
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
178
179
180
			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...
181
182
void AxisLegendManager::pushComponentInList(std::string paramId, ParameterIndexComponentColor& index, AxisParamsComponents& axisParamsComponents) {
	if (index.getDim1Index() == -1 && index.getDim2Index() == -1) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
183
184
185
186
187
188
		//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...
189
			if (axisParamsComponents[paramId].front().getDim1Index() == -1 && axisParamsComponents[paramId].front().getDim2Index() == -1) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
190
191
				//Skip. All components already defined for this paramter on this axis
				return;
fbe3c2bb   Benjamin Renard   First commit
192
			}
c2fa3b5d   Benjamin Renard   Rework of legend ...
193
		}
8bb0f02b   Benjamin Renard   Set colors in axi...
194
195
196
197
198
		for (auto crtIndex : axisParamsComponents[paramId]) {
			if ((crtIndex.getDim1Index() == index.getDim1Index()) && (crtIndex.getDim2Index() == index.getDim2Index())) {
				//Component already exists
				return;
			}
c2fa3b5d   Benjamin Renard   Rework of legend ...
199
		}
8bb0f02b   Benjamin Renard   Set colors in axi...
200
201
		//Add this components for this axis
		axisParamsComponents[paramId].push_back(index);
c2fa3b5d   Benjamin Renard   Rework of legend ...
202
	}
fbe3c2bb   Benjamin Renard   First commit
203

c2fa3b5d   Benjamin Renard   Rework of legend ...
204
}
fbe3c2bb   Benjamin Renard   First commit
205

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

c2fa3b5d   Benjamin Renard   Rework of legend ...
211
212
	// Retrieve ParamInfo Manager
	ParamMgr* piMgr = ParamMgr::getInstance();
fbe3c2bb   Benjamin Renard   First commit
213

c2fa3b5d   Benjamin Renard   Rework of legend ...
214
215
216
217
218
	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...
219
			Color color = paramsComponents.second.front().getColor();
c2fa3b5d   Benjamin Renard   Rework of legend ...
220
			paramsComponents.second.clear();
8bb0f02b   Benjamin Renard   Set colors in axi...
221
			paramsComponents.second.push_back(ParameterIndexComponentColor(-1,-1, color));
c2fa3b5d   Benjamin Renard   Rework of legend ...
222
		}
8c8ac7bf   Benjamin Renard   Write mission/ins...
223
		bool isFirstComponent = true;
c2fa3b5d   Benjamin Renard   Rework of legend ...
224
225
226
		for (auto components : paramsComponents.second) {
			if (paramInfo == nullptr)
				continue;
8bb0f02b   Benjamin Renard   Set colors in axi...
227
228
229
230
231
232
233
234
235
236
237
238
			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...
239
				if (!info.empty()) {
8bb0f02b   Benjamin Renard   Set colors in axi...
240
					label._text = info + ", ";
8c8ac7bf   Benjamin Renard   Write mission/ins...
241
242
				}
			}
df45df5e   Benjamin Renard   Introduce AxisLeg...
243
			label._text += getParamLegend(paramInfo, components);
8bb0f02b   Benjamin Renard   Set colors in axi...
244
			pAxis->_legend.pushLabel(label);
8c8ac7bf   Benjamin Renard   Write mission/ins...
245
			isFirstComponent = false;
fbe3c2bb   Benjamin Renard   First commit
246
		}
fbe3c2bb   Benjamin Renard   First commit
247
248
249
	}
}

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

5ee90a58   Benjamin Renard   Use AxisLegendMan...
255
256
257
258
259
260
261
	// 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 ...
262

df45df5e   Benjamin Renard   Introduce AxisLeg...
263
264
265
266
	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 ...
267
268
}

5ee90a58   Benjamin Renard   Use AxisLegendMan...
269
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...
270
	if (pAxis == nullptr || !pAxis->_legend.isEmpty()) {
5ee90a58   Benjamin Renard   Use AxisLegendMan...
271
272
		return;
	}
fbe3c2bb   Benjamin Renard   First commit
273

5ee90a58   Benjamin Renard   Use AxisLegendMan...
274
275
276
277
278
279
280
281
	// 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
282

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

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

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

5ee90a58   Benjamin Renard   Use AxisLegendMan...
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
	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...
318
		if ((otherTableSPtr != nullptr) && !otherTableSPtr->isVariable(&plot->_parameterManager))
5ee90a58   Benjamin Renard   Use AxisLegendMan...
319
		{
e7ea756d   Benjamin Renard   Implements tables...
320
			if (otherTableSPtr->getName(&plot->_parameterManager).empty())
df45df5e   Benjamin Renard   Introduce AxisLeg...
321
				addInfoPart(label._text, "Table bounds");
5ee90a58   Benjamin Renard   Use AxisLegendMan...
322
			else
e7ea756d   Benjamin Renard   Implements tables...
323
				addInfoPart(label._text, otherTableSPtr->getName(&plot->_parameterManager));
5ee90a58   Benjamin Renard   Use AxisLegendMan...
324
325
				
			AMDA::Info::t_TableBound crtBound = otherTableSPtr->getBound(&plot->_parameterManager, otherDimIndex);
df45df5e   Benjamin Renard   Introduce AxisLeg...
326
			addBoundsPart(label._text, crtBound.min, crtBound.max);
e7ea756d   Benjamin Renard   Implements tables...
327
			addInfoPart(label._text, otherTableSPtr->getUnits(&plot->_parameterManager));
5ee90a58   Benjamin Renard   Use AxisLegendMan...
328
329
330
331
332
		}
		else
		{
			std::string part = "Table Index: ";
			part += otherDimIndex;
df45df5e   Benjamin Renard   Introduce AxisLeg...
333
			addInfoPart(label._text, part);
c2fa3b5d   Benjamin Renard   Rework of legend ...
334
		}
df45df5e   Benjamin Renard   Introduce AxisLeg...
335
		addBreakLine(label._text);
c2fa3b5d   Benjamin Renard   Rework of legend ...
336
	}
e7ea756d   Benjamin Renard   Implements tables...
337
338
	addInfoPart(label._text, tableSPtr->getName(&plot->_parameterManager));
	addInfoPart(label._text, tableSPtr->getUnits(&plot->_parameterManager));
df45df5e   Benjamin Renard   Introduce AxisLeg...
339
	pAxis->_legend.pushLabel(label);
c2fa3b5d   Benjamin Renard   Rework of legend ...
340
}
fbe3c2bb   Benjamin Renard   First commit
341

c2fa3b5d   Benjamin Renard   Rework of legend ...
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
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
357

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

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

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

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

c2fa3b5d   Benjamin Renard   Rework of legend ...
382
383
	generateDigitalLabel(axis, min, minCount, 1024, data);
	generateDigitalLabel(axis, max, maxCount, 1024, data);
fbe3c2bb   Benjamin Renard   First commit
384

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

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

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

	if ((index.getDim1Index() != -1) || (index.getDim2Index() != -1)) {
8bb0f02b   Benjamin Renard   Set colors in axi...
401
402
403
		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 ...
404
		else
fbe3c2bb   Benjamin Renard   First commit
405
		{
c2fa3b5d   Benjamin Renard   Rework of legend ...
406
407
			addInfoPart(legend, paramInfo->getShortName());
			addIndexPart(legend, index);
fbe3c2bb   Benjamin Renard   First commit
408
		}
fbe3c2bb   Benjamin Renard   First commit
409
	}
c2fa3b5d   Benjamin Renard   Rework of legend ...
410
411
412
413
414
415
416

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

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

5ee90a58   Benjamin Renard   Use AxisLegendMan...
421
	if ((index.getDim1Index() != -1) || (index.getDim2Index() != -1)) {
c2fa3b5d   Benjamin Renard   Rework of legend ...
422
423
424
425
426
427
428
429
430
431
432
                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...
433

c2fa3b5d   Benjamin Renard   Rework of legend ...
434
        return legend;
5ee90a58   Benjamin Renard   Use AxisLegendMan...
435
}*/
fbe3c2bb   Benjamin Renard   First commit
436

8c8ac7bf   Benjamin Renard   Write mission/ins...
437
438
439
440
441
442
443
444
445
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...
446
447
448
449
450
451
452
453
454
455
456
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
457
} /* namespace plot */