]> Creatis software - bbtk.git/commitdiff
#3464 Bug CreateImage box in 2D (spacing)
authorEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Thu, 10 Jun 2021 07:29:45 +0000 (09:29 +0200)
committerEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Thu, 10 Jun 2021 07:29:45 +0000 (09:29 +0200)
packages/vtk/src/bbvtkCreateImage.cxx

index 499d3364e26d89a9613e0af4f9a5be8ffa28b509..2cdb383f495994e172d5303a775aa6ea5123b095 100644 (file)
@@ -53,10 +53,13 @@ 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];
+       dim[0]  = bbGetInputDimensions()[0];
+       dim[1]  = bbGetInputDimensions()[1];
+       dim[2]  = bbGetInputDimensions()[2];
+
+
 
        if (imageoutput!=NULL) 
        {
@@ -68,9 +71,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 +124,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 +145,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();
@@ -152,6 +170,7 @@ void CreateImage::Process()
        } // if dim = 0
 
        bbSetOutputOut(imageoutput);
+       
 }      
        
 //=====