]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkCreateImage.cxx
Clean code
[bbtk.git] / packages / vtk / src / bbvtkCreateImage.cxx
index 499d3364e26d89a9613e0af4f9a5be8ffa28b509..2c75a26041084cd93d041a8fcc734e6aef1c948f 100644 (file)
@@ -53,12 +53,11 @@ void CreateImage::Process()
 //    * TYPE is the C++ type of the input/output
 //      (the one provided in the attribute 'type' of the tag 'input')
 
-       int             dim[3]; 
-       dim[0] = bbGetInputDimensions()[0];
-       dim[1] = bbGetInputDimensions()[1];
-       dim[2] = bbGetInputDimensions()[2];
-
-       if (imageoutput!=NULL) 
+    int                dim[3];
+       dim[0]  = bbGetInputDimensions()[0];
+       dim[1]  = bbGetInputDimensions()[1];
+       dim[2]  = bbGetInputDimensions()[2];
+       if (imageoutput!=NULL)
        {
                imageoutput->Delete();
                imageoutput = NULL;
@@ -68,9 +67,34 @@ void CreateImage::Process()
        {
                double  spc[3];
                int             outputformat = VTK_UNSIGNED_SHORT;
-               spc[0] = bbGetInputSpacing()[0];
-               spc[1] = bbGetInputSpacing()[1];
-               spc[2] = bbGetInputSpacing()[2];
+
+               spc[0]  = 1;
+               spc[1]  = 1;
+               spc[2]  = 1;
+               if  ( bbGetInputSpacing().size()==3 )
+               {
+                       spc[0] = bbGetInputSpacing()[0];
+                       spc[1] = bbGetInputSpacing()[1];
+                       spc[2] = bbGetInputSpacing()[2];
+                       if ((spc[0]<=0)||(spc[1]<=0)||(spc[2]<=0))
+                       {
+                               spc[0] = 1;
+                               spc[1] = 1;
+                               spc[2] = 1;
+                       }
+               } // size spc 3
+               if  ( bbGetInputSpacing().size()==2 )
+               {
+                       spc[0] = bbGetInputSpacing()[0];
+                       spc[1] = bbGetInputSpacing()[1];
+                       if ((spc[0]<=0)||(spc[1]<=0))
+                       {
+                               spc[0] = 1;
+                               spc[1] = 1;
+                       }
+               } // if size spc 2
+
+               
                if (bbGetInputOutputFormat()=="VTK_BIT")                                        outputformat = VTK_BIT;                 // 1
                else if (bbGetInputOutputFormat()=="VTK_CHAR")                          outputformat = VTK_CHAR;                                // 2
                else if (bbGetInputOutputFormat()=="MET_CHAR")                          outputformat = VTK_CHAR;                                // 2
@@ -96,16 +120,11 @@ void CreateImage::Process()
 
                if ((dim[0]<=0)||(dim[1]<=0)||(dim[2]<=0))
                {
-                       dim[0]=1;
-                       dim[1]=1;
-                       dim[2]=1;
-               }
-               if ((spc[0]<=0)||(spc[1]<=0)||(spc[2]<=0))
-               {
-                       spc[0]=1;
-                       spc[1]=1;
-                       spc[2]=1;
+                       dim[0] = 1;
+                       dim[1] = 1;
+                       dim[2] = 1;
                }
+
                imageoutput = vtkImageData::New();
                imageoutput->Initialize();
                imageoutput->SetSpacing( spc );
@@ -122,25 +141,20 @@ void CreateImage::Process()
                
                int i,j,k;
                long sizeBlock; 
-
                for (i=0; i<dim[0]; i++)
                {
                        imageoutput->SetScalarComponentFromDouble(i,0,0, 0, bbGetInputInitialValue() );
                } // for i
-               
                sizeBlock= dim[0] * imageoutput->GetScalarSize();
                for (j=1; j<dim[1]; j++)
                {
                        memcpy(  imageoutput->GetScalarPointer(0,j,0), imageoutput->GetScalarPointer()  , sizeBlock );
                } // for j              
-
                sizeBlock= dim[0] * dim[1] * imageoutput->GetScalarSize();
                for (k=0; k<dim[2]; k++)
                {
                        memcpy(  imageoutput->GetScalarPointer(0,0,k) ,imageoutput->GetScalarPointer()  , sizeBlock );
                } // for k
-               
-
        //EED 2017-01-01 Migration VTK7
        #if (VTK_MAJOR_VERSION <= 5) 
                imageoutput->Update();
@@ -150,9 +164,8 @@ void CreateImage::Process()
        #endif
                imageoutput->Modified();
        } // if dim = 0
-
        bbSetOutputOut(imageoutput);
-}      
+}
        
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)