X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkCreateImage.cxx;h=2cdb383f495994e172d5303a775aa6ea5123b095;hb=9e8c95c96acaea8851733d20090bf6de7eed1269;hp=cb9d77bf0d920e156f4de703db005274e643e7f3;hpb=e269992d2d446784afc40073782311deaa25008f;p=bbtk.git diff --git a/packages/vtk/src/bbvtkCreateImage.cxx b/packages/vtk/src/bbvtkCreateImage.cxx index cb9d77b..2cdb383 100644 --- a/packages/vtk/src/bbvtkCreateImage.cxx +++ b/packages/vtk/src/bbvtkCreateImage.cxx @@ -53,87 +53,124 @@ void CreateImage::Process() // * TYPE is the C++ type of the input/output // (the one provided in the attribute 'type' of the tag 'input') - double spc[6]; + int dim[3]; - int outputformat = VTK_UNSIGNED_SHORT; - - 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 - else if (bbGetInputOutputFormat()=="VTK_SIGNED_CHAR") outputformat = VTK_SIGNED_CHAR; // 15 - else if (bbGetInputOutputFormat()=="MET_UCHAR") outputformat = VTK_UNSIGNED_CHAR; // 3 - else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_CHAR") outputformat = VTK_UNSIGNED_CHAR; // 3 - else if (bbGetInputOutputFormat()=="VTK_SHORT") outputformat = VTK_SHORT; // 4 - else if (bbGetInputOutputFormat()=="MET_SHORT") outputformat = VTK_SHORT; // 4 - else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_SHORT") outputformat = VTK_UNSIGNED_SHORT; // 5 - else if (bbGetInputOutputFormat()=="MET_USHORT") outputformat = VTK_UNSIGNED_SHORT; // 5 - else if (bbGetInputOutputFormat()=="VTK_INT") outputformat = VTK_INT; // 6 - else if (bbGetInputOutputFormat()=="MET_INT") outputformat = VTK_INT; // 6 - else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_INT") outputformat = VTK_UNSIGNED_INT; // 7 - else if (bbGetInputOutputFormat()=="MEY_UINT") outputformat = VTK_UNSIGNED_INT; // 7 - else if (bbGetInputOutputFormat()=="VTK_LONG") outputformat = VTK_LONG; // 8 - else if (bbGetInputOutputFormat()=="MET_LONG") outputformat = VTK_LONG; // 8 - else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_LONG") outputformat = VTK_UNSIGNED_LONG; // 9 - else if (bbGetInputOutputFormat()=="MET_ULONG") outputformat = VTK_UNSIGNED_LONG; // 9 - else if (bbGetInputOutputFormat()=="VTK_FLOAT") outputformat = VTK_FLOAT; // 10 - else if (bbGetInputOutputFormat()=="MET_FLOAT") outputformat = VTK_FLOAT; // 10 - else if (bbGetInputOutputFormat()=="VTK_DOUBLE") outputformat = VTK_DOUBLE; // 11 - else if (bbGetInputOutputFormat()=="MET_DOUBLE") outputformat = VTK_DOUBLE; // 11 - - - spc[0] = bbGetInputSpacing()[0]; - spc[1] = bbGetInputSpacing()[1]; - spc[2] = bbGetInputSpacing()[2]; - - dim[0] = bbGetInputDimensions()[0]; - dim[1] = bbGetInputDimensions()[1]; - dim[2] = bbGetInputDimensions()[2]; - - imageoutput->Initialize(); - imageoutput->SetSpacing( spc ); - imageoutput->SetDimensions( dim[0], dim[1], dim[2] ); - -//EED 2017-01-01 Migration VTK7 -#if (VTK_MAJOR_VERSION <= 5) - imageoutput->SetScalarType( outputformat ); - imageoutput->AllocateScalars(); -#endif -#if (VTK_MAJOR_VERSION >= 6) - imageoutput->AllocateScalars( outputformat,1 ); -#endif - + dim[0] = bbGetInputDimensions()[0]; + dim[1] = bbGetInputDimensions()[1]; + dim[2] = bbGetInputDimensions()[2]; - 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 - + imageoutput->Delete(); + imageoutput = NULL; + } // if imageoutput -//EED 2017-01-01 Migration VTK7 -#if (VTK_MAJOR_VERSION <= 5) - imageoutput->Update(); -#endif -#if (VTK_MAJOR_VERSION >= 6) - // .. -#endif + if ( !((dim[0]<=0)||(dim[1]<=0)||(dim[2]<=0)) ) + { + double spc[3]; + int outputformat = VTK_UNSIGNED_SHORT; + + 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 + else if (bbGetInputOutputFormat()=="VTK_SIGNED_CHAR") outputformat = VTK_SIGNED_CHAR; // 15 + else if (bbGetInputOutputFormat()=="MET_UCHAR") outputformat = VTK_UNSIGNED_CHAR; // 3 + else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_CHAR") outputformat = VTK_UNSIGNED_CHAR; // 3 + else if (bbGetInputOutputFormat()=="VTK_SHORT") outputformat = VTK_SHORT; // 4 + else if (bbGetInputOutputFormat()=="MET_SHORT") outputformat = VTK_SHORT; // 4 + else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_SHORT") outputformat = VTK_UNSIGNED_SHORT; // 5 + else if (bbGetInputOutputFormat()=="MET_USHORT") outputformat = VTK_UNSIGNED_SHORT; // 5 + else if (bbGetInputOutputFormat()=="VTK_INT") outputformat = VTK_INT; // 6 + else if (bbGetInputOutputFormat()=="MET_INT") outputformat = VTK_INT; // 6 + else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_INT") outputformat = VTK_UNSIGNED_INT; // 7 + else if (bbGetInputOutputFormat()=="MEY_UINT") outputformat = VTK_UNSIGNED_INT; // 7 + else if (bbGetInputOutputFormat()=="VTK_LONG") outputformat = VTK_LONG; // 8 + else if (bbGetInputOutputFormat()=="MET_LONG") outputformat = VTK_LONG; // 8 + else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_LONG") outputformat = VTK_UNSIGNED_LONG; // 9 + else if (bbGetInputOutputFormat()=="MET_ULONG") outputformat = VTK_UNSIGNED_LONG; // 9 + else if (bbGetInputOutputFormat()=="VTK_FLOAT") outputformat = VTK_FLOAT; // 10 + else if (bbGetInputOutputFormat()=="MET_FLOAT") outputformat = VTK_FLOAT; // 10 + else if (bbGetInputOutputFormat()=="VTK_DOUBLE") outputformat = VTK_DOUBLE; // 11 + else if (bbGetInputOutputFormat()=="MET_DOUBLE") outputformat = VTK_DOUBLE; // 11 + + if ((dim[0]<=0)||(dim[1]<=0)||(dim[2]<=0)) + { + dim[0] = 1; + dim[1] = 1; + dim[2] = 1; + } + + imageoutput = vtkImageData::New(); + imageoutput->Initialize(); + imageoutput->SetSpacing( spc ); + imageoutput->SetDimensions( dim[0], dim[1], dim[2] ); + + //EED 2017-01-01 Migration VTK7 + #if (VTK_MAJOR_VERSION <= 5) + imageoutput->SetScalarType( outputformat ); + imageoutput->AllocateScalars(); + #endif + #if (VTK_MAJOR_VERSION >= 6) + imageoutput->AllocateScalars( outputformat,1 ); + #endif + + 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(); + #endif + #if (VTK_MAJOR_VERSION >= 6) + // .. + #endif + imageoutput->Modified(); + } // if dim = 0 - imageoutput->Modified(); bbSetOutputOut(imageoutput); + } //===== @@ -170,7 +207,7 @@ void CreateImage::bbUserInitializeProcessing() // but this is where you should allocate the internal/output pointers // if any - imageoutput = vtkImageData::New(); +//EED 2017-12-7 imageoutput = vtkImageData::New(); }