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

#ifndef AXISLEGENDMANAGER_HH_
#define AXISLEGENDMANAGER_HH_

#include "PanelPlotOutput.hh"
#include "XYPlot.hh"
#include "ParamMgr.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(XYPlot* plot);

		static void setAxisLegendForSeries(PanelPlotOutput* plot, boost::shared_ptr<Axis>& pAxis, AxisParamsComponents& axisParamsComponents);

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

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

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

}

#endif