Commit 2acc7d49d3d65558b490ecc5251bc55a7932393e

Authored by Hacene SI HADJ MOHAND
1 parent 0be91da0

progress

src/ParamOutputImpl/Plot/Time/TimePlot.cc
... ... @@ -17,6 +17,8 @@
17 17 #include "ShadesTools.hh"
18 18 #include "AxisLegendManager.hh"
19 19 #include <fstream>
  20 +#include <limits>
  21 +#include <cstddef>
20 22  
21 23 #include "DefaultTimeAxisDecorator.hh"
22 24 #include "TickMarkDecorator.hh"
... ... @@ -961,24 +963,21 @@ void TimePlot::drawSpectro(double startDate, double stopDate, std::string pParam
961 963 continue;
962 964 }
963 965 }
964   - std::string normalistion = pSpectro pSpectro.getNormalisation;
965   - if (pSpectro != nullptr){
966   - double usedValues[] = normalise(data.getValues(index, startIndex) ,normalistion);
967   - }else{
968   - double usedValues[] = data.getValues(index, startIndex);
969   - }
970   -
  966 +
971 967 for (int i = 0; i < nbValues - 1; ++i)
972 968 {
973 969 part.x[0] = data.getTimes()[startIndex+i];
974 970 part.x[1] = data.getTimes()[startIndex+i+1];
975 971 part.isColorIndex = false;
976   - part.value = usedValues[i];
  972 + part.value = data.getValues(index, startIndex)[i];
977 973 matrixGrid.push_back(part);
978 974 }
979 975  
980 976 //draw spectro
981 977 LOG4CXX_DEBUG(gLogger, "TimePlot::drawSpectro - Draw data grid - " << matrixGrid.size());
  978 + std::string normalistion = pSpectro.getNormalisation();
  979 + if (!normalistion.empty())
  980 + normalise(matrixGrid, normalistion);
982 981 drawMatrix(matrixGrid, pSpectro.getMin(), pSpectro.getMax(),
983 982 minValColor, maxValColor, lZAxis->_color._colorMapIndex, pSpectro.getUseLog0AsMin());
984 983 matrixGrid.clear();
... ... @@ -1042,39 +1041,48 @@ void TimePlot::drawSpectro(double startDate, double stopDate, std::string pParam
1042 1041 }
1043 1042 //draw spectro
1044 1043 LOG4CXX_DEBUG(gLogger, "TimePlot::drawSpectro - Draw data grid - " << matrixGrid.size());
  1044 + std::string normalistion = pSpectro.getNormalisation();
  1045 + if (!normalistion.empty())
  1046 + normalise(matrixGrid, normalistion);
  1047 +
1045 1048 drawMatrix(matrixGrid, pSpectro.getMin(), pSpectro.getMax(),
1046 1049 minValColor, maxValColor, lZAxis->_color._colorMapIndex, pSpectro.getUseLog0AsMin());
1047 1050 matrixGrid.clear();
1048 1051 }
1049 1052 }
1050 1053 }
1051   -double * normalise(double values [], std::string normalisationType){
1052   - max = std::max_element(std::begin(rawValues), std::end(rawValues));
1053   - min = std::min_element(std::begin(rawValues), std::end(rawValues));
1054   - int len = std::sizeof(values)/std::sizeof(values[0]);
1055   - double res [len] ;
  1054 +void TimePlot::normalise(MatrixGrid & matrixGrid, std::string normalisationType){
  1055 + double min = DBL_MAX;
  1056 + double max = DBL_MIN;
  1057 + int len = matrixGrid.size();
  1058 + for(auto val :matrixGrid){
  1059 + if(val.value <min)
  1060 + min = val.value;
  1061 + if(val.value > max)
  1062 + max = val.value;
  1063 + }
  1064 + if (min <= 0)
  1065 + min = DBL_MIN;
1056 1066 if(std::isnan(min) || std::isnan(max)){
1057   - return values;
  1067 + return;
1058 1068 }else if(min == max){
1059   - for (itn i =0; i < len; i++)
1060   - res[i] = values[i]/max;
1061   - return res;
  1069 + for (int i =0; i < len; i++)
  1070 + matrixGrid[i].value= matrixGrid[i].value/max;
1062 1071 }else{
1063   - switch(normalisationType){
1064   - case 'log':
1065   - for (itn i =0; i < len; i++)
1066   - res[i] = (std::log10(values[i])-std::log10(min))/(std::log10(max)-std::log10(min));
1067   - return res;
1068   - break;
1069   - case 'linear':
1070   - for (itn i =0; i < len; i++)
1071   - res[i] = (values[i]-min)/(max-min);
1072   - return res;
1073   - break;
1074   - default:
1075   - BOOST_THROW_EXCEPTION(PanelPlotOutputException() << AMDA::ex_msg("Unknwon normalisation "<<normalisationType));
1076   - break;
1077   - }
  1072 + if(normalisationType == "log"){
  1073 + for (int i =0; i < len; i++)
  1074 + matrixGrid[i].value = (std::log10(matrixGrid[i].value)-std::log10(min))/(std::log10(max)-std::log10(min));
  1075 + return;
  1076 + }else if (normalisationType == "linear"){
  1077 + for (int i =0; i < len; i++)
  1078 + matrixGrid[i].value = (matrixGrid[i].value-min)/(max-min);
  1079 + return;
  1080 + }else{
  1081 + std::stringstream lError;
  1082 + lError << "Unknwon normalisation " << normalisationType;
  1083 + BOOST_THROW_EXCEPTION(PanelPlotOutputException() << AMDA::ex_msg(lError.str()));
  1084 + }
  1085 +
1078 1086 }
1079 1087  
1080 1088 }
... ...
src/ParamOutputImpl/Plot/Time/TimePlot.hh
... ... @@ -68,6 +68,8 @@ public:
68 68 std::shared_ptr<TimeAxisDecorator> getTimeAxisDecorator(){
69 69 return _xdecoratorPtr;
70 70 }
  71 +
  72 + void normalise(MatrixGrid & matrixGrid, std::string normalisationType);
71 73  
72 74 /**
73 75 * @brief QSAS time configuration for time formatting
... ...