]> 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 68b2b1c4797895febcef1449f6f40a6a74030f32..03673e6f1b476d88636824cfb70c7591c8a7e17f 100644 (file)
@@ -100,12 +100,15 @@ printf("EED InversCrop::Process 2   %d %d  %d \n",dim[0],dim[1],dim[2]  );
                } 
 
                
-               printf("EED InversCrop::Process 3   %d %d  %d \n",dimMoveX,dimMoveY,dimMoveZ  );
+printf("EED InversCrop::Process 3   %d %d  %d \n",dimMoveX,dimMoveY,dimMoveZ  );
 
                
                
                int spxM                = 0;  // start px MoveImage
                int sizeXM              = 0;  // sizeX MoveImage
+printf("EED InversCrop::Process 3.1   sizeOrigin %d \n", bbGetInputOrigin().size() );
+printf("EED InversCrop::Process 3.1   Origin %d  %d %d\n", bbGetInputOrigin()[0],bbGetInputOrigin()[1],bbGetInputOrigin()[2] );
+
                px                              = bbGetInputOrigin()[0];
                spxM                    = 0;
                if (px<0)
@@ -113,15 +116,20 @@ printf("EED InversCrop::Process 2   %d %d  %d \n",dim[0],dim[1],dim[2]  );
                   spxM = px*(-1);
                   px   = 0;
                }
-               sizeXM = dimMoveX-spxM;
-               if (px+sizeXM>=dim[0]) sizeXM=dim[0]-px;
-               sizeXM = sizeXM * bbGetInputImageFix()->GetScalarSize();
+               sizeXM  = dimMoveX-spxM;
+               if (px+sizeXM>=dim[0]) { sizeXM=dim[0]-px; }
+               sizeXM  = sizeXM * bbGetInputImageFix()->GetScalarSize();
                for (k=0; k<dimMoveZ; k++)
                {
                   for (j=0; j<dimMoveY; j++)
                   {
                        py = j+bbGetInputOrigin()[1];
-                               pz = k+bbGetInputOrigin()[2];
+                               if (bbGetInputImageMove()->GetDataDimension()==3) 
+                               {
+                                       pz = k+bbGetInputOrigin()[2];
+                               } else {
+                                       pz = k;
+                               }// Dimension 3
                                if ( (py<dim[1]) && (pz<dim[2]) &&
                                 (py>=0)    && (pz>=0)  &&
                                         (sizeXM>0) ) 
@@ -131,6 +139,8 @@ printf("EED InversCrop::Process 2   %d %d  %d \n",dim[0],dim[1],dim[2]  );
 
                   } // for j
                } // for k
+printf("EED InversCrop::Process 4   %d %d  %d \n",px,py,pz  );
+
                _imageoutput->Modified();
        } else { // If Image Fixe Move the same GetScalarType
                   printf ("ERROR: InversCrop  both ImageFixe and ImageMove need the same format.\n");