From 5ab6a1678119cdff10db5524a400a0ecc3c53580 Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Wed, 29 Jan 2020 11:50:28 +0100 Subject: [PATCH] #3352 BBTK Feature New Normal - box TemporaryPicker in 3D --- packages/vtk/src/bbvtkTemporalPicker.cxx | 154 ++++++++++++++++++++--- packages/vtk/src/bbvtkTemporalPicker.h | 10 +- 2 files changed, 147 insertions(+), 17 deletions(-) diff --git a/packages/vtk/src/bbvtkTemporalPicker.cxx b/packages/vtk/src/bbvtkTemporalPicker.cxx index 37901c7..f1375ac 100644 --- a/packages/vtk/src/bbvtkTemporalPicker.cxx +++ b/packages/vtk/src/bbvtkTemporalPicker.cxx @@ -41,21 +41,109 @@ BBTK_BLACK_BOX_IMPLEMENTATION(TemporalPicker,bbtk::AtomicBlackBox); //===== // 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) //===== -void TemporalPicker::Process() + + +void TemporalPicker::Process_TemporaryPicker3DT() { + std::vector result; + if (bbGetInputInLst().size()>0) + { + int ext[6]; + int sizeX,sizeY,sizeZ,sizeT=bbGetInputInLst().size(); -// THE MAIN PROCESSING METHOD BODY -// Here we simply set the input 'In' value to the output 'Out' -// And print out the output value -// INPUT/OUTPUT ACCESSORS ARE OF THE FORM : -// void bbSet{Input|Output}NAME(const TYPE&) -// const TYPE& bbGet{Input|Output}NAME() const -// Where : -// * NAME is the name of the input/output -// (the one provided in the attribute 'name' of the tag 'input') -// * TYPE is the C++ type of the input/output -// (the one provided in the attribute 'type' of the tag 'input') +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + bbGetInputInLst()[0]->GetWholeExtent(ext); +#else + bbGetInputInLst()[0]->GetExtent(ext); +#endif + + sizeX = ext[1]-ext[0]+1; + sizeY = ext[3]-ext[2]+1; + sizeZ = ext[5]-ext[4]+1; + + if (bbGetInputPoint().size()>=3) + { + int px = bbGetInputPoint()[0]; + int py = bbGetInputPoint()[1]; + int pz = bbGetInputPoint()[2]; + int minX = px-bbGetInputSizeRegion()-1; + int maxX = px+bbGetInputSizeRegion()-1; + int minY = py-bbGetInputSizeRegion()-1; + int maxY = py+bbGetInputSizeRegion()-1; + int minZ = pz-bbGetInputSizeRegion()-1; + int maxZ = pz+bbGetInputSizeRegion()-1; + + if ( (minX>=0) && + (maxX=0) && + (maxY=0) && + (maxZGetScalarPointer() ); + acum = 0; + numElem = 0; + + GETVALUE2_VTK_CREA(vIn,pIn,stIn,index) + numElem++; + acum = acum + vIn; +/* +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +printf("EED Warnning !!!!!! TemporalPicker::Process Clean this method region 3D calcule missing ...........\n"); +*/ +/* + for(i=minX;i<=maxX;i++) + { + for(j=minY;j<=maxY;j++) + { +// if ((i>=0) && (i=0) && (jGetScalarComponentAsDouble(i, j, k, 0); + numElem++; +// }// if i j + }// for j + } // for i + +*/ + if (numElem>0) + { + result.push_back( acum/numElem ); /// ???????????? Aqui ???? + } else { + result.push_back( 0 ); + } // numElem + + } // for k + } // px py + } else {// bbGetInputPoint + printf("ERROR: Input:Point is not good defined in TemporalPicker Box..\n "); + } // bbGetInputPoint + } else {// bbGetInputIn + printf("ERROR: Missing Input:In vtkImageData* in TemporalPicker Box..\n "); + } // bbGetInputIn + bbSetOutputOut(result); +} + + +//-------------------------------------------------------------------------------------------- +void TemporalPicker::Process_TemporaryPicker2DT() +{ std::vector result; if (bbGetInputIn()!=NULL) { @@ -91,7 +179,7 @@ void TemporalPicker::Process() (minY>=0) && (maxY0) { - result.push_back( acum/numElem ); + result.push_back( acum/numElem ); /// Aqui ????? } else { result.push_back( 0 ); } // numElem @@ -139,6 +238,31 @@ void TemporalPicker::Process() } // bbGetInputIn bbSetOutputOut(result); } + +void TemporalPicker::Process() +{ + +// THE MAIN PROCESSING METHOD BODY +// Here we simply set the input 'In' value to the output 'Out' +// And print out the output value +// INPUT/OUTPUT ACCESSORS ARE OF THE FORM : +// void bbSet{Input|Output}NAME(const TYPE&) +// const TYPE& bbGet{Input|Output}NAME() const +// Where : +// * NAME is the name of the input/output +// (the one provided in the attribute 'name' of the tag 'input') +// * TYPE is the C++ type of the input/output +// (the one provided in the attribute 'type' of the tag 'input') + + + if (bbGetInputInLst().size()>0) + { + Process_TemporaryPicker3DT(); + } else { + Process_TemporaryPicker2DT(); + } + +} //===== // 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) //===== diff --git a/packages/vtk/src/bbvtkTemporalPicker.h b/packages/vtk/src/bbvtkTemporalPicker.h index 13b918f..84f18f0 100644 --- a/packages/vtk/src/bbvtkTemporalPicker.h +++ b/packages/vtk/src/bbvtkTemporalPicker.h @@ -40,11 +40,16 @@ class bbvtk_EXPORT TemporalPicker : public bbtk::AtomicBlackBox { BBTK_BLACK_BOX_INTERFACE(TemporalPicker,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,vtkImageData*); + BBTK_DECLARE_INPUT(InLst,std::vector < vtkImageData*> ); BBTK_DECLARE_INPUT(SizeRegion,int); BBTK_DECLARE_INPUT(Point,std::vector); BBTK_DECLARE_OUTPUT(Out,std::vector); BBTK_PROCESS(Process); - void Process(); + + void Process(); + void Process_TemporaryPicker2DT(); + void Process_TemporaryPicker3DT(); + }; BBTK_BEGIN_DESCRIBE_BLACK_BOX(TemporalPicker,bbtk::AtomicBlackBox); @@ -52,7 +57,8 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(TemporalPicker,bbtk::AtomicBlackBox); BBTK_AUTHOR("Info-Dev"); BBTK_DESCRIPTION("Pick vector in Z direction (2D+t => 3D)"); BBTK_CATEGORY(""); - BBTK_INPUT(TemporalPicker,In,"Input image",vtkImageData*,""); + BBTK_INPUT(TemporalPicker,In,"In image or InLst images",vtkImageData*,""); + BBTK_INPUT(TemporalPicker,InLst,"In image or InLst images",std::vector,""); BBTK_INPUT(TemporalPicker,SizeRegion,"Size region (default 1)",int,""); BBTK_INPUT(TemporalPicker,Point,"Point [x,y]",std::vector,""); BBTK_OUTPUT(TemporalPicker,Out,"Output vector with Z information",std::vector,""); -- 2.47.1