AxisLegendManager.hh 3.11 KB
/*
 * AxisLegendManager.hh
 *
 *  Created on: 23 jan. 2015
 *      Author: AKKA
 */

#ifndef AXISLEGENDMANAGER_HH_
#define AXISLEGENDMANAGER_HH_

#include "PanelPlotOutput.hh"
#include "ParamMgr.hh"
#include "XYPlot.hh"

using namespace AMDA::Info;

namespace plot
{

	class ParameterIndexComponentColor
	{
	public:
		ParameterIndexComponentColor(int dim1Index, int dim2Index, Color &color) : _dim1Index(dim1Index), _dim2Index(dim2Index), _color(color)
		{
		}

		ParameterIndexComponentColor(AMDA::Common::ParameterIndexComponent index, Color &color) : _dim1Index(index.getDim1Index()), _dim2Index(index.getDim2Index()), _color(color)
		{
		}

		ParameterIndexComponentColor(const ParameterIndexComponentColor &index) : _dim1Index(index._dim1Index), _dim2Index(index._dim2Index), _color(index._color)
		{
		}

		const Color &getColor() const
		{
			return _color;
		}

		void setColor(Color &color)
		{
			_color = color;
		}

		int getDim1Index()
		{
			return _dim1Index;
		}

		int getDim2Index()
		{
			return _dim2Index;
		}

	private:
		int _dim1Index;

		int _dim2Index;

		Color _color;
	};

	class AxisLegendManager
	{
	public:
		typedef std::map<std::string, std::list<ParameterIndexComponentColor>> AxisParamsComponents;

		static void configureYAxisLegendForSpectro(PanelPlotOutput *plot);

		static void configureYAxisLegendForSeries(PanelPlotOutput *plot);

		static void configureColorAxisLegendForSpectro(PanelPlotOutput *plot);

		static void configureColorAxisLegendForSeries(PanelPlotOutput *plot);

		static void configureXAxisLegendForSeries(PanelPlotOutput *plot);

		static void setAxisLegendForSeries(PanelPlotOutput *plot, boost::shared_ptr<Axis> &pAxis, AxisParamsComponents &axisParamsComponents, std::vector<std::string> insertionOrder, std::string legendPrefix="");

		static void setAxisLegendForSpectro(PanelPlotOutput *plot, boost::shared_ptr<Axis> &pAxis, std::string originalParamId);

		static void setAxisLegendForTable(PanelPlotOutput *plot, boost::shared_ptr<Axis> &pAxis, std::string originalParamId, std::string paramId, AMDA::Common::ParameterIndexComponentList &indexes, int relatedDim);
		static std::string getTransformedUnits(const std::string &rawUnit);

	private:
		static void addInfoPart(std::string &legend, std::string info);

		static void addIndexPart(std::string &legend, ParameterIndexComponentColor &index);

		static void addIndexPart(std::string &legend, int index);

		static void addBoundsPart(std::string &legend, PLFLT min, PLFLT max);

		static void addBreakLine(std::string &legend);

		static void pushComponentInList(std::string paramId, ParameterIndexComponentColor &index, AxisParamsComponents &axisParamsComponents, std::vector<std::string> &insertionOrder);

		static std::string getParamLegend(AMDA::Info::ParamInfoSPtr paramInfo, ParameterIndexComponentColor &index);

		// static std::string getParamLegend(AMDA::Info::ParamInfoSPtr paramInfo, int index);

		static std::string getMissionInstrumentInfo(AMDA::Info::ParamInfoSPtr paramInfo);

		static std::string getMissionInfo(AMDA::Info::ParamInfoSPtr paramInfo);

		static std::string transformPower(std::string &unit, std::string pattern);
	};

}

#endif