]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkInversCrop.cxx
#3212 BBTK Feature New Normal - vtk8itk4wx3-mingw64
[bbtk.git] / packages / vtk / src / bbvtkInversCrop.cxx
index 75d4e53e57574644639ce0b071309679adda11a4..29be94cabe1ed7bd18a5b9e3f2b6b89130773987 100644 (file)
@@ -36,12 +36,82 @@ void InversCrop::Process()
                int dim[3];
                int ext[6];
        
-               bbGetInputImageFix()->GetWholeExtent(ext);
-               dim[0]= ext[1]-ext[0]+1;
-               dim[1]= ext[3]-ext[2]+1;
-               dim[2]= ext[5]-ext[4]+1;
-
-               if (bbGetInputType()==0)
+//EED 2017-01-01 Migration VTK7
+#if (VTK_MAJOR_VERSION <= 5) 
+       bbGetInputImageFix()->GetWholeExtent(ext);
+#endif
+#if (VTK_MAJOR_VERSION >= 6) 
+       bbGetInputImageFix()->GetExtent(ext);
+#endif
+       dim[0]= ext[1]-ext[0]+1;
+       dim[1]= ext[3]-ext[2]+1;
+       dim[2]= ext[5]-ext[4]+1;
+
+       if (bbGetInputType()==0)
+       {
+               _imageoutput = vtkImageData::New();
+               _imageoutput->Initialize();
+               _imageoutput->SetSpacing( bbGetInputImageFix()->GetSpacing() );
+               _imageoutput->SetDimensions(  dim[0], dim[1], dim[2] );
+//EED 2017-01-01 Migration VTK7
+#if (VTK_MAJOR_VERSION <= 5) 
+               _imageoutput->SetScalarType( bbGetInputImageFix()->GetScalarType() );
+               _imageoutput->AllocateScalars();
+#endif
+#if (VTK_MAJOR_VERSION >= 6) 
+               _imageoutput->AllocateScalars(bbGetInputImageFix()->GetScalarType() , 1);
+#endif
+       }
+       if (bbGetInputType()==1)
+       {
+               _imageoutput=bbGetInputImageFix();
+       }
+
+
+        // Duplicating Fix Image
+       long sizeimage = dim[0]*dim[1]*dim[2]*bbGetInputImageFix()->GetScalarSize();    
+       memcpy( _imageoutput->GetScalarPointer() , bbGetInputImageFix()->GetScalarPointer() , sizeimage);
+
+       // Copy the Move Image
+       int j,k; 
+       int px,py,pz;
+
+//EED 2017-01-01 Migration VTK7
+#if (VTK_MAJOR_VERSION <= 5) 
+       bbGetInputImageMove()->GetWholeExtent(ext);
+#endif
+#if (VTK_MAJOR_VERSION >= 6) 
+       bbGetInputImageMove()->GetExtent(ext);
+#endif
+
+       int dimMoveX = ext[1]-ext[0]+1;
+       int dimMoveY = ext[3]-ext[2]+1;
+       int dimMoveZ = ext[5]-ext[4]+1;
+
+        int spxM=0;  // start px MoveImage
+        int sizeXM=0;  // sizeX MoveImage
+
+       px=bbGetInputOrigin()[0];
+        spxM=0;
+        if (px<=0)
+       { 
+          spxM=px*(-1);
+          px=0;
+       }
+       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 ( (py<dim[1]) && (pz<dim[2]) &&
+                    (py>=0)    && (pz>=0)      &&
+                    (sizeXM>0) ) 
                {
                        _imageoutput = vtkImageData::New();
                        _imageoutput->Initialize();