]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkInversCrop.cxx
#3467 Bug: InvertCrop Dimension of 2D or 3D
[bbtk.git] / packages / vtk / src / bbvtkInversCrop.cxx
index 9e8c578b470416080901a12985baac01141fae44..68b2b1c4797895febcef1449f6f40a6a74030f32 100644 (file)
@@ -26,6 +26,8 @@ void InversCrop::Process()
 //    * TYPE is the C++ type of the input/output
 //      (the one provided in the attribute 'type' of the tag 'input')
 
+printf("\n\n EED InversCrop::Process Start \n" );
+
        if (bbGetInputActive()==true)
        {
            if ( (bbGetInputImageFix()!=NULL) && (bbGetInputImageMove()!=NULL) )
@@ -45,7 +47,14 @@ void InversCrop::Process()
 #endif
                dim[0]= ext[1]-ext[0]+1;
                dim[1]= ext[3]-ext[2]+1;
-               dim[2]= ext[5]-ext[4]+1;
+               dim[2] = 1;
+               if (bbGetInputImageFix()->GetDataDimension()==3) 
+               {
+                       dim[2] = ext[5]-ext[4]+1;
+               } 
+               
+printf("EED InversCrop::Process 1   %d\n", bbGetInputImageFix()->GetDataDimension()    );
+printf("EED InversCrop::Process 2   %d %d  %d \n",dim[0],dim[1],dim[2]  );
 
                if (bbGetInputType()==0)
                {
@@ -71,8 +80,6 @@ void InversCrop::Process()
                        _imageoutput=bbGetInputImageFix();
                }
 
-
-
                // Copy the Move Image
                int j,k; 
                int px,py,pz;
@@ -86,27 +93,35 @@ void InversCrop::Process()
 #endif
                int dimMoveX    = ext[1]-ext[0]+1;
                int dimMoveY    = ext[3]-ext[2]+1;
-               int dimMoveZ    = ext[5]-ext[4]+1;
+               int dimMoveZ    = 1;
+               if (bbGetInputImageMove()->GetDataDimension()==3) 
+               {
+                       dimMoveZ = ext[5]-ext[4]+1;
+               } 
+
+               
+               printf("EED InversCrop::Process 3   %d %d  %d \n",dimMoveX,dimMoveY,dimMoveZ  );
 
+               
+               
                int spxM                = 0;  // start px MoveImage
                int sizeXM              = 0;  // sizeX MoveImage
-
                px                              = bbGetInputOrigin()[0];
                spxM                    = 0;
                if (px<0)
                { 
-                  spxM=px*(-1);
-                  px=0;
+                  spxM = px*(-1);
+                  px   = 0;
                }
                sizeXM = dimMoveX-spxM;
                if (px+sizeXM>=dim[0]) sizeXM=dim[0]-px;
-               sizeXM=sizeXM*bbGetInputImageFix()->GetScalarSize();
+               sizeXM = sizeXM * bbGetInputImageFix()->GetScalarSize();
                for (k=0; k<dimMoveZ; k++)
                {
                   for (j=0; j<dimMoveY; j++)
                   {
-                       py=j+bbGetInputOrigin()[1];
-                               pz=k+bbGetInputOrigin()[2];
+                       py = j+bbGetInputOrigin()[1];
+                               pz = k+bbGetInputOrigin()[2];
                                if ( (py<dim[1]) && (pz<dim[2]) &&
                                 (py>=0)    && (pz>=0)  &&
                                         (sizeXM>0) ) 
@@ -117,19 +132,18 @@ void InversCrop::Process()
                   } // for j
                } // for k
                _imageoutput->Modified();
-             } // If Image Fixe Move the same GetScalarType
-               else {
+       } else { // If Image Fixe Move the same GetScalarType
                   printf ("ERROR: InversCrop  both ImageFixe and ImageMove need the same format.\n");
                   printf ("       type ImageFix:%d   type ImageMove:%d\n", bbGetInputImageFix()->GetScalarType(), bbGetInputImageMove()->GetScalarType() );
 
              }  
-           } // If Image Fixe Move != NULL   
-            else {
-               printf ("ERROR: InversCrop  need ImageFixe and ImageMove to run.\n");
-           } 
-           bbSetOutputOut(_imageoutput);
+           } else { // If Image Fixe Move != NULL
+                       printf ("ERROR: InversCrop  need ImageFixe and ImageMove to run.\n");
+          } 
+        bbSetOutputOut(_imageoutput);
 
        } // if Active
+printf("EED InversCrop::Process End \n" );
 
 }