]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkFlip.cxx
BUG 1576 Flip Box
[bbtk.git] / packages / vtk / src / bbvtkFlip.cxx
index 4f9244fe7a101ad0d78cd51f1f4bdc3e6c7db3f9..4a9bcd201f0f333457fccaecb3e86f2e547664d6 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkFlip.cxx,v $
   Language:  C++
-  Date:      $Date: 2012/04/11 16:27:00 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2012/08/06 11:49:20 $
+  Version:   $Revision: 1.4 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -58,8 +58,6 @@ namespace bbvtk
    void Flip::bbUserInitializeProcessing() 
    {
        //std::cout << "-------- entree ds Flip::bbUserInitalizeProcessing()\n" << std::endl;
-      //bbUserFinalizeProcessing();
-      mImageOut = vtkImageData::New();  // Alloc depends on  bbGetInputIn().size()  
    }
   
 //---------------------------------------------------------------------
@@ -70,8 +68,8 @@ namespace bbvtk
    // WTF? we never enter here // JPR  bbUserFinalizeProcessing()  JPR 
       if (mImageOut!=NULL)
       {
-        // mImageOut->Delete();
-        // mImageOut=NULL;
+        mImageOut->Delete();
+        mImageOut=NULL;
       }
       bbSetOutputOut(mImageOut);          
    }
@@ -85,83 +83,57 @@ namespace bbvtk
  ///
 void Flip::Process()
 {
-       vtkImageData* imageIn = bbGetInputIn();
-       vtkImageData * mImageOut = flip(imageIn);
-      
-   // Devrait etre dans bbUserFinalizeProcessing() ? // JPR    
-        bbSetOutputOut(mImageOut);     
-}
-
+       
+       if (bbGetInputIn()!=NULL)
+       {
+               if (mImageOut!=NULL)
+               {
+                       mImageOut->Delete();
+                       mImageOut=NULL;
+               } // if mImageOut
+       
+               mImageOut = vtkImageData::New();  // Alloc depends on  bbGetInputIn().size()  
+               mImageOut->Initialize();
+               mImageOut->SetScalarType(  bbGetInputIn()->GetScalarType() );
+               mImageOut->SetSpacing(   bbGetInputIn()->GetSpacing()  );
+               mImageOut->SetDimensions(   bbGetInputIn()->GetDimensions()  );
+               mImageOut->SetNumberOfScalarComponents( bbGetInputIn()->GetNumberOfScalarComponents() );
+               mImageOut->AllocateScalars();
+       
+               int inputdims[3];
+               //   int outputdims[3];
+               bbGetInputIn()->GetDimensions (inputdims);
+               bbGetInputIn()->Update();
+               int nbScalComp  = bbGetInputIn()->GetNumberOfScalarComponents();
+               int scalarSize  = bbGetInputIn()->GetScalarSize();
+               int lineSize    = inputdims[0]*scalarSize*nbScalComp;      
+               int planeSize   = inputdims[1]*lineSize;
+               char *pixelsIn  = (char *)bbGetInputIn()->GetScalarPointer();
+               char *pixelsOut = (char *)mImageOut->GetScalarPointer();
+       
+               char *lineIn;
+               char *lineOut;
+               char *debPlanIn;
+               char *debPlanOut;
+               int j,k;
+               for(k=0; k<inputdims[2]; k++)  // iterate on planes
+               {  
+                       debPlanIn       = pixelsIn+k*planeSize;
+                       debPlanOut      = pixelsOut+k*planeSize;
+                       for(j=0; j<inputdims[1]; j++)  // iterates on rows
+                       { 
+                               lineIn = debPlanIn+j*lineSize;
+                               lineOut = debPlanOut+(inputdims[1]-1-j)*lineSize;
+                               memcpy(lineOut,  lineIn, lineSize);
+                       }       // for j
+               } // for k
+       
+               bbSetOutputOut( mImageOut  );           
+       } // bbGetInputIn
 
-vtkImageData * Flip::flip(vtkImageData *imageIn)
-{   
-   int inputdims[3];
-//   int outputdims[3];
-   imageIn->GetDimensions (inputdims);
-   imageIn->Update();
-   int nbScalComp = imageIn->GetNumberOfScalarComponents();
-   int scalarSize = imageIn->GetScalarSize();
-   int lineSize  = inputdims[0]*scalarSize*nbScalComp;    
-   int planeSize = inputdims[1]*lineSize;
-   char *pixelsIn = (char *)imageIn->GetScalarPointer();
-   
-/*     
-   outputdims[0] = inputdims[1]; 
-   outputdims[1] = inputdims[0];
-   outputdims[2] = inputdims[2];
- std::cout << " inputdims[0] " << inputdims[0] <<" inputdims[1] " <<inputdims[1] << " inputdims[2] "
-           << inputdims[2] << std::endl;
-*/
-
- /*       
-    vtkImageData *vtkImageOut;
-    vtkImageOut = vtkImageData::New();
-    vtkImageOut->SetDimensions( outputdims );
-    vtkImageOut->SetExtent(0,outputdims[0]-1,0,outputdims[1]-1,0,outputdims[2]-1);
-    vtkImageOut->SetWholeExtent(0,outputdims[0]-1,0,outputdims[1]-1,0,outputdims[2]-1);
-    int nbScalComp = imageIn->GetNumberOfScalarComponents();
-    vtkImageOut->SetNumberOfScalarComponents(nbScalComp);
-    vtkImageOut->SetSpacing( imageIn->GetSpacing() );
-    vtkImageOut->SetScalarType(imageIn->GetScalarType()  );
-    vtkImageOut->AllocateScalars();
-    vtkImageOut->Update();    
-    char *pixelsOut = (char *)vtkImageOut->GetScalarPointer();    
-    unsigned short *output =(unsigned short *)(vtkImageOut->GetScalarPointer());
-   */
-   
-   char *temp = (char *)malloc(lineSize);
-   char *line1;
-   char *line2;
-   char *debPlan;     
-   for(int k=0; k<inputdims[2]; k++) {  // iterate on planes
-        debPlan = pixelsIn+k*planeSize;
-               for(int j=0; j<inputdims[1]/2; j++) { // iterates on rows
-                       line1 = debPlan+j*lineSize;
-                       line2 = debPlan+(inputdims[1]-1-j)*lineSize;
-                       memcpy(temp,  line2, lineSize);
-                       memcpy(line2, line1, lineSize);
-                       memcpy(line1, temp,  lineSize);        
-       }
-   }
-   
-// This was to transpose the image ...  
-/*
-    for(int k=0; k<inputdims[2]; k++) {  // iterate on planes
-       for(int j=0; j<inputdims[1]; j++) { // iterates on rows
-          for(int i=0; i<inputdims[0]; i++) { // iterates on columns
-             for(int l=0; l<nbScalComp; l++) { // iterates on scalar components
-                vtkImageOut->SetScalarComponentFromDouble(j,i,k,l,imageIn->GetScalarComponentAsDouble(i,j,k,l));
-             }
-         } 
-         
-       }
-    }
-    return  vtkImageOut;
-*/
-   free (temp);
-   return imageIn;        
 }
 
+
 }//namespace bbtk
 
 #endif // _USE_VTK_