- 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