From fcd0b47bc5140620012273b34e5a90ff6f66be9d Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Thu, 10 Jun 2021 09:29:45 +0200 Subject: [PATCH] #3464 Bug CreateImage box in 2D (spacing) --- packages/vtk/src/bbvtkCreateImage.cxx | 59 ++++++++++++++++++--------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/packages/vtk/src/bbvtkCreateImage.cxx b/packages/vtk/src/bbvtkCreateImage.cxx index 499d336..2cdb383 100644 --- a/packages/vtk/src/bbvtkCreateImage.cxx +++ b/packages/vtk/src/bbvtkCreateImage.cxx @@ -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; iSetScalarComponentFromDouble(i,0,0, 0, bbGetInputInitialValue() ); } // for i - sizeBlock= dim[0] * imageoutput->GetScalarSize(); for (j=1; jGetScalarPointer(0,j,0), imageoutput->GetScalarPointer() , sizeBlock ); } // for j - sizeBlock= dim[0] * dim[1] * imageoutput->GetScalarSize(); for (k=0; kGetScalarPointer(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); + } //===== -- 2.45.1