From 5d9e729e9c102f7d336f2744b880232008cb6706 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Traizet?= <cedric.traizet@c-s.fr>
Date: Mon, 2 Sep 2019 16:06:24 +0200
Subject: [PATCH] BUG: refactor the rescale parameter so it can actually be
 used in cli

---
 .../app/otbDimensionalityReduction.cxx        | 27 ++++++++++---------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/Modules/Applications/AppDimensionalityReduction/app/otbDimensionalityReduction.cxx b/Modules/Applications/AppDimensionalityReduction/app/otbDimensionalityReduction.cxx
index 90272424c4..6415a174e3 100644
--- a/Modules/Applications/AppDimensionalityReduction/app/otbDimensionalityReduction.cxx
+++ b/Modules/Applications/AppDimensionalityReduction/app/otbDimensionalityReduction.cxx
@@ -103,18 +103,20 @@ private:
     AddParameter(ParameterType_OutputImage, "out", "Output Image");
     SetParameterDescription("out", "output image. Components are ordered by decreasing eigenvalues.");
     MandatoryOff("out");
-    AddParameter(ParameterType_Group, "rescale", "Rescale Output");
+    
+    AddParameter(ParameterType_Choice, "rescale", "Rescale Output");
+    SetParameterDescription("rescale", "Enable rescaling of the reduced output image.");
 
     MandatoryOff("rescale");
-    //  AddChoice("rescale.no","No rescale");
-    // AddChoice("rescale.minmax","rescale to min max value");
+    AddChoice("rescale.no","No rescale");
+    AddChoice("rescale.minmax","rescale to min max value");
 
-    AddParameter(ParameterType_Float, "rescale.outmin", "Output min value");
-    AddParameter(ParameterType_Float, "rescale.outmax", "Output max value");
-    SetDefaultParameterFloat("rescale.outmin", 0.0);
-    SetParameterDescription("rescale.outmin", "Minimum value of the output image.");
-    SetDefaultParameterFloat("rescale.outmax", 255.0);
-    SetParameterDescription("rescale.outmax", "Maximum value of the output image.");
+    AddParameter(ParameterType_Float, "rescale.minmax.outmin", "Output min value");
+    AddParameter(ParameterType_Float, "rescale.minmax.outmax", "Output max value");
+    SetDefaultParameterFloat("rescale.minmax.outmin", 0.0);
+    SetParameterDescription("rescale.minmax.outmin", "Minimum value of the output image.");
+    SetDefaultParameterFloat("rescale.minmax.outmax", 255.0);
+    SetParameterDescription("rescale.minmax.outmax", "Maximum value of the output image.");
 
     AddParameter(ParameterType_OutputImage, "outinv", " Inverse Output Image");
     SetParameterDescription("outinv", "reconstruct output image.");
@@ -237,7 +239,6 @@ private:
     // Get Parameters
     int nbComp = GetParameterInt("nbcomp");
     bool normalize = GetParameterInt("normalize");
-    bool rescale = IsParameterEnabled("rescale");
     bool invTransform = HasValue("outinv") && IsParameterEnabled("outinv");
     switch (GetParameterInt("method"))
       {
@@ -450,7 +451,7 @@ private:
         }
       }
 
-    if (!rescale)
+    if (GetParameterString("rescale")=="no")
       {
       SetParameterOutputImage("out", m_ForwardFilter->GetOutput());
       }
@@ -480,8 +481,8 @@ private:
       FloatVectorImageType::PixelType outMin, outMax;
       outMin.SetSize(m_ForwardFilter->GetOutput()->GetNumberOfComponentsPerPixel());
       outMax.SetSize(m_ForwardFilter->GetOutput()->GetNumberOfComponentsPerPixel());
-      outMin.Fill(GetParameterFloat("rescale.outmin"));
-      outMax.Fill(GetParameterFloat("rescale.outmax"));
+      outMin.Fill(GetParameterFloat("rescale.minmax.outmin"));
+      outMax.Fill(GetParameterFloat("rescale.minmax.outmax"));
 
       m_RescaleFilter->SetOutputMinimum(outMin);
       m_RescaleFilter->SetOutputMaximum(outMax);
-- 
GitLab