X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbmaracasvisuAxeVolume.cxx;h=5cb228ef9c0c2a0ff2f333498d4e757e3381d632;hb=3ffc04fea9ffbe065dd0141b2d213353e874b284;hp=79e5ac0cf0fbfb4ccbed8ce1268a661ec33599f3;hpb=865d74f8d9ea0b80a3bc4de0be2b73d85399c2b5;p=creaMaracasVisu.git diff --git a/bbtk/src/bbmaracasvisuAxeVolume.cxx b/bbtk/src/bbmaracasvisuAxeVolume.cxx index 79e5ac0..5cb228e 100644 --- a/bbtk/src/bbmaracasvisuAxeVolume.cxx +++ b/bbtk/src/bbmaracasvisuAxeVolume.cxx @@ -25,16 +25,47 @@ #include "bbmaracasvisuAxeVolume.h" #include "bbcreaMaracasVisuPackage.h" + namespace bbcreaMaracasVisu { + BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,AxeVolume) BBTK_BLACK_BOX_IMPLEMENTATION(AxeVolume,bbtk::AtomicBlackBox); -void AxeVolume::Process() + +int AxeVolume::GetTypeFormat( std::string formatStr , vtkImageData* image ) { + int outputformat = VTK_UNSIGNED_CHAR; + if (formatStr=="SAME") + { + if (image!=NULL) outputformat = image->GetScalarType(); + } + else if (formatStr=="VTK_BIT") outputformat = VTK_BIT; // 1 + else if (formatStr=="VTK_CHAR") outputformat = VTK_CHAR; // 2 + else if (formatStr=="VTK_SIGNED_CHAR") outputformat = VTK_SIGNED_CHAR; // 15 + else if (formatStr=="VTK_UNSIGNED_CHAR") outputformat = VTK_UNSIGNED_CHAR; // 3 + else if (formatStr=="VTK_SHORT") outputformat = VTK_SHORT; // 4 + else if (formatStr=="VTK_UNSIGNED_SHORT") outputformat = VTK_UNSIGNED_SHORT; // 5 + else if (formatStr=="VTK_INT") outputformat = VTK_INT; // 6 + else if (formatStr=="VTK_UNSIGNED_INT") outputformat = VTK_UNSIGNED_INT; // 7 + else if (formatStr=="VTK_LONG") outputformat = VTK_LONG; // 8 + else if (formatStr=="VTK_UNSIGNED_LONG") outputformat = VTK_UNSIGNED_LONG; // 9 + else if (formatStr=="VTK_FLOAT") outputformat = VTK_FLOAT; // 10 + else if (formatStr=="VTK_DOUBLE") outputformat = VTK_DOUBLE; // 11 + else if (formatStr=="MET_CHAR") outputformat = VTK_CHAR; // 2 + else if (formatStr=="MET_UCHAR") outputformat = VTK_UNSIGNED_CHAR; // 3 + else if (formatStr=="MET_SHORT") outputformat = VTK_SHORT; // 4 + else if (formatStr=="MET_USHORT") outputformat = VTK_UNSIGNED_SHORT; // 5 + else if (formatStr=="MET_SHORT") outputformat = VTK_SHORT; // 4 + else if (formatStr=="MET_FLOAT") outputformat = VTK_FLOAT; // 10 + else if (formatStr=="MET_DOUBLE") outputformat = VTK_DOUBLE; // 11 + + return outputformat; +} - printf("EED AxeVolume::Process start \n"); +void AxeVolume::Process() +{ if ( mimage!=NULL ) { mimage->Delete(); @@ -53,23 +84,17 @@ void AxeVolume::Process() invSpc[1] = 1/spc[1]; invSpc[2] = 1/spc[2]; + int outputformat = GetTypeFormat( bbGetInputOutputFormat() , bbGetInputIn() ); + mimage = vtkImageData::New(); mimage->SetSpacing(bbGetInputIn()->GetSpacing()); mimage->SetDimensions(bbGetInputIn()->GetDimensions()); mimage->SetExtent(bbGetInputIn()->GetExtent()); mimage->SetOrigin(bbGetInputIn()->GetOrigin()); - //mimage->SetDimensions(sizeX,sizeY,sizeZ); - //mimage->SetOrigin(0,0,0); - //mimage->SetExtent( 0 , sizeX-1 , 0 , sizeY-1 , 0, sizeZ-1 ); - //mimage->SetWholeExtent( 0 , sizeX-1 , 0 , sizeY-1 , 0, sizeZ-1 ); - mimage->SetScalarTypeToUnsignedShort(); - //mimage->SetSpacing(spc); + mimage->SetScalarType( outputformat ); mimage->AllocateScalars(); - - - int i,j,k; - int sizeLstPointR = bbGetInputlstPointR().size(); + int sizeLstPointR = bbGetInputlstPointR().size(); int iAxe,sizeAxe = bbGetInputlstPointX().size(); double rx,ry,rz; double r,rr; @@ -78,7 +103,6 @@ void AxeVolume::Process() double px,py,pz; double px1,py1,pz1; double px2,py2,pz2; - // Clean image p = (unsigned short*)mimage->GetScalarPointer (0, 0, 0); for ( i=0 ; i=0) && (i=0) && (j=0) && (kGetScalarPointer (i, j, k); - if (*p==0) + if ( (i>=0) && (i=0) && (j=0) && (kGetScalarPointer (i, j, k); +// if (*p==0) + if ( mimage->GetScalarComponentAsDouble(i,j,k,0)==0 ) { rz = k - pz; rz = rz*rz; if ( rx + ry + rz <= rr ) { - *p=255; +// *p=255; + mimage->SetScalarComponentFromDouble (i,j,k,0, bbGetInputValue() ); } } // *p==0 - } // inside point + } // if inside point } //for k } //for j } //for i } // for iAxe bbSetOutputOut( mimage ); - - printf("EED AxeVolume::Process end \n"); - } @@ -148,6 +173,8 @@ void AxeVolume::Process() void AxeVolume::bbUserSetDefaultValues() { mimage=NULL; + bbSetInputOutputFormat("SAME"); + bbSetInputValue(255); } //-----------------------------------------------------------------