From 64dfcac955fba513bf1852ede0aa3113acd8e27e Mon Sep 17 00:00:00 2001 From: Antoine Regimbeau <antoine.regimbeau@c-s.fr> Date: Tue, 3 Apr 2018 09:33:52 +0200 Subject: [PATCH] REFAC: new default behaviour --- .../AppImageUtils/app/otbExtractROI.cxx | 91 +++++++++++-------- 1 file changed, 54 insertions(+), 37 deletions(-) diff --git a/Modules/Applications/AppImageUtils/app/otbExtractROI.cxx b/Modules/Applications/AppImageUtils/app/otbExtractROI.cxx index 66f2886edc..2320c6c127 100644 --- a/Modules/Applications/AppImageUtils/app/otbExtractROI.cxx +++ b/Modules/Applications/AppImageUtils/app/otbExtractROI.cxx @@ -249,6 +249,21 @@ private: void DoUpdateParameters() override { + if( GetParameterString("mode") != "standard" ) + { + this->DisableParameter("startx"); + this->DisableParameter("starty"); + this->DisableParameter("sizex"); + this->DisableParameter("sizey"); + } + else + { + this->EnableParameter("startx"); + this->EnableParameter("starty"); + this->EnableParameter("sizex"); + this->EnableParameter("sizey"); + } + if ( HasValue("in") ) { ImageType* inImage = GetParameterImage("in"); @@ -265,21 +280,36 @@ private: && !HasUserValue( "mode.radius.cy" ); // Update the sizes only if the user has not defined a size - if (!HasUserValue("sizex") && !HasUserValue("sizey") ) + ImageType::RegionType currentLargest; + currentLargest.SetSize( 0 , GetParameterInt("sizex") ); // need a methode to get default value + currentLargest.SetSize( 1 , GetParameterInt("sizey") ); // need a methode to get default value + currentLargest.SetIndex( 0, 0 ); + currentLargest.SetIndex( 1, 0 ); + if ( currentLargest != largestRegion ) { - SetParameterInt("sizex",largestRegion.GetSize()[0]); - SetParameterInt("sizey",largestRegion.GetSize()[1]); - - // Compute extent parameter with default sizex and sizey - if ( GetParameterString( "mode" ) == "extent" && userExtent ) - ComputeExtentFromIndex( inImage, largestRegion ); + // Put the limit of the index and the size relative the image + SetMaximumParameterIntValue("sizex", largestRegion.GetSize(0)); + SetMaximumParameterIntValue("sizey", largestRegion.GetSize(1)); + SetMaximumParameterIntValue("startx", largestRegion.GetSize(0)); + SetMaximumParameterIntValue("starty", largestRegion.GetSize(1)); + + SetDefaultParameterInt( "sizex" , largestRegion.GetSize(0) ); + SetDefaultParameterInt( "sizey" , largestRegion.GetSize(1) ); + // if ( !HasUserValue("sizex") ) + // SetParameterInt( "sizex" , largestRegion.GetSize(0) ); + // if ( !HasUserValue("sizey") ) + // SetParameterInt( "sizey" , largestRegion.GetSize(1) ); // Compute radius parameter with default sizex and sizey if ( GetParameterString( "mode" ) == "radius" && userRadius ) ComputeRadiusFromIndex( inImage , largestRegion ); + // Compute extent parameter with default sizex and sizey + if ( GetParameterString( "mode" ) == "extent" && userExtent ) + ComputeExtentFromIndex( inImage, largestRegion ); } + unsigned int nbComponents = inImage->GetNumberOfComponentsPerPixel(); ListViewParameter *clParam = dynamic_cast<ListViewParameter*>(GetParameterByKey("cl")); @@ -296,20 +326,11 @@ private: } } - // Put the limit of the index and the size relative the image - - SetMaximumParameterIntValue("sizex", largestRegion.GetSize(0)); - SetMaximumParameterIntValue("sizey", largestRegion.GetSize(1)); - SetMaximumParameterIntValue("startx", largestRegion.GetSize(0)); - SetMaximumParameterIntValue("starty", largestRegion.GetSize(1)); - - // Update the start and size parameter depending on the mode if ( GetParameterString("mode") == "extent" && !userExtent) ComputeIndexFromExtent(); if (GetParameterString("mode") == "radius" && !userRadius) ComputeIndexFromRadius(); - // Crop the roi region to be included in the largest possible // region @@ -327,24 +348,13 @@ private: this->SetParameterRole("starty",Role_Output); this->SetParameterRole("sizex",Role_Output); this->SetParameterRole("sizey",Role_Output); - this->DisableParameter("startx"); - this->DisableParameter("starty"); - this->DisableParameter("sizex"); - this->DisableParameter("sizey"); } - - else if(GetParameterString("mode")=="standard" || - GetParameterString("mode")=="extent" || - GetParameterString("mode")== "radius" ) + else { this->SetParameterRole("startx",Role_Input); this->SetParameterRole("starty",Role_Input); this->SetParameterRole("sizex",Role_Input); this->SetParameterRole("sizey",Role_Input); - this->EnableParameter("startx"); - this->EnableParameter("starty"); - this->EnableParameter("sizex"); - this->EnableParameter("sizey"); } } @@ -636,7 +646,7 @@ private: if ( GetParameterString("mode.radius.unitr") == "pxl" ) { int rad = std::min( centeri[ 0 ], centeri[ 1 ] ); - SetParameterFloat( "mode.radius.r" , rad); + SetDefaultParameterFloat( "mode.radius.r" , rad); } if ( GetParameterString("mode.radius.unitr") == "phy" ) { @@ -645,19 +655,22 @@ private: input->TransformIndexToPhysicalPoint(helpRxi,helpRxp); input->TransformIndexToPhysicalPoint(helpRyi,helpRyp); float rad = std::min( helpRxp[0] - helpRyp[0] , helpRyp[1] - helpRxp[1] ); - SetParameterFloat( "mode.radius.r" , rad); + SetDefaultParameterFloat( "mode.radius.r" , rad); } + // if ( !HasUserValue( "mode.radius.r" ) + // setvalueasdefault + if ( GetParameterString("mode.radius.unitc") == "pxl" ) { - SetParameterFloat( "mode.radius.cx" , centeri[0]); - SetParameterFloat( "mode.radius.cy" , centeri[1]) ; + SetDefaultParameterFloat( "mode.radius.cx" , centeri[0] ); + SetDefaultParameterFloat( "mode.radius.cy" , centeri[1] ); } if ( GetParameterString("mode.radius.unitc") == "phy" ) { - itk::Point<float, 2> centerp , helpRp; + itk::Point<float, 2> centerp ; input->TransformIndexToPhysicalPoint(centeri,centerp); - SetParameterFloat( "mode.radius.cx" , centerp[0]); - SetParameterFloat( "mode.radius.cy" , centerp[1]) ; + SetDefaultParameterFloat( "mode.radius.cx" , centerp[0] ); + SetDefaultParameterFloat( "mode.radius.cy" , centerp[1] ); } if ( GetParameterString("mode.radius.unitc") == "lonlat" ) { @@ -668,9 +681,13 @@ private: itk::Point<float, 2> centerp_in, centerp_out; input->TransformIndexToPhysicalPoint(centeri,centerp_in); centerp_out = rsTransform->TransformPoint( centerp_in ); - SetParameterFloat( "mode.radius.cx" , centerp_out[ 0 ]); - SetParameterFloat( "mode.radius.cy" , centerp_out[ 1 ]); + SetDefaultParameterFloat( "mode.radius.cx" , centerp_out[ 0 ]); + SetDefaultParameterFloat( "mode.radius.cy" , centerp_out[ 1 ]); } + // if ( !HasUserValue( "mode.radius.cx")) + //setasdefault + // if ( !HasUserValue( "mode.radius.cy")) + //setasdefault } void -- GitLab