From: guigues Date: Wed, 7 May 2008 07:26:49 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: r0.6.1~49 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=19a1e7a2f298bfdfee13893f98272de4e6d0f7f2;p=bbtk.git *** empty log message *** --- diff --git a/kernel/appli/bbfy/bbfy.cpp b/kernel/appli/bbfy/bbfy.cpp index e67bce9..bb42097 100644 --- a/kernel/appli/bbfy/bbfy.cpp +++ b/kernel/appli/bbfy/bbfy.cpp @@ -550,23 +550,34 @@ void bbfy::CreateHeader() mFile << "{\n"; // Interface - mFile << " BBTK_BLACK_BOX_INTERFACE(" - << mName << "," - << mParentBlackBox << ");\n"; - // typedef on itkfilter + // ITK if (mType == itkImageToImageFilter) { - mFile << " typedef " <special=="itk input") { mFile << " BBTK_DECLARE_ITK_INPUT(" - << "itkParent," << ioi->name << "," << ioi->type @@ -610,7 +620,6 @@ void bbfy::CreateHeader() { if (mType == vtkImageAlgorithm) { mFile << " BBTK_DECLARE_VTK_IMAGE_ALGORITHM_INPUT(" - << "vtkParent," << ioi->name << "," << ioi->type @@ -618,7 +627,6 @@ void bbfy::CreateHeader() } else if (mType == vtkPolyDataAlgorithm) { mFile << " BBTK_DECLARE_POLY_DATA_ALGORITHM_INPUT(" - << "vtkParent," << ioi->name << "," << ioi->type @@ -628,7 +636,6 @@ void bbfy::CreateHeader() else if (ioi->special=="itk parameter") { mFile << " BBTK_DECLARE_ITK_PARAM(" - << "itkParent," << ioi->name << "," << ioi->type @@ -637,7 +644,6 @@ void bbfy::CreateHeader() else if (ioi->special=="vtk parameter") { mFile << " BBTK_DECLARE_VTK_PARAM(" - << "vtkParent," << ioi->name << "," << ioi->type @@ -668,7 +674,6 @@ void bbfy::CreateHeader() else if (ioi->special=="itk output") { mFile << " BBTK_DECLARE_ITK_OUTPUT(" - << "itkParent," << ioi->name << "," << ioi->type @@ -677,7 +682,6 @@ void bbfy::CreateHeader() else if (ioi->special=="vtk output") { mFile << " BBTK_DECLARE_VTK_OUTPUT(" - << "vtkParent," << ioi->name << "," << ioi->type @@ -703,13 +707,13 @@ void bbfy::CreateHeader() } else if (mType == itkImageToImageFilter) { - mFile << " BBTK_PROCESS(itkParent::Update);\n" ; + mFile << " BBTK_ITK_PROCESS();\n" ; } else if ((mType == vtkImageAlgorithm) || (mType == vtkPolyDataAlgorithm) ) { - mFile << " BBTK_PROCESS(vtkParent::Update);\n" ; + mFile << " BBTK_VTK_PROCESS();\n" ; } // CreateWidget diff --git a/kernel/src/bbtkItkBlackBoxMacros.h b/kernel/src/bbtkItkBlackBoxMacros.h index 52cd4f8..2894465 100644 --- a/kernel/src/bbtkItkBlackBoxMacros.h +++ b/kernel/src/bbtkItkBlackBoxMacros.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkItkBlackBoxMacros.h,v $ Language: C++ - Date: $Date: 2008/05/07 06:31:37 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/05/07 07:26:50 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -29,23 +29,35 @@ //=========================================================================== //=========================================================================== +//=========================================================================== +#define BBTK_ITK_DELETE() \ + void bbDelete() { \ + itkParent::UnRegister(); } +//=========================================================================== + +//=========================================================================== +#define BBTK_ITK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX,ITKPARENT) \ + BBTK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX); \ + typedef ITKPARENT itkParent; \ + BBTK_ITK_DELETE(); +//=========================================================================== //=========================================================================== /// Declares an itk-inherited AtomicBlackBox input -#define BBTK_DECLARE_ITK_INPUT(PARENT,NAME,TYPE) \ +#define BBTK_DECLARE_ITK_INPUT(NAME,TYPE) \ public: \ TYPE bbGetInput##NAME () \ - { return PARENT::GetInput(); } \ + { return itkParent::GetInput(); } \ void bbSetInput##NAME (TYPE d) \ - { PARENT::SetInput(d); \ + { itkParent::SetInput(d); \ /*bbSetModifiedStatus();*/ } //=========================================================================== //=========================================================================== -#define BBTK_DECLARE_ITK_OUTPUT(PARENT,NAME,TYPE) \ +#define BBTK_DECLARE_ITK_OUTPUT(NAME,TYPE) \ public: \ TYPE bbGetOutput##NAME () \ - { return PARENT::GetOutput(); } \ + { return itkParent::GetOutput(); } \ void bbSetOutput##NAME (TYPE d) \ { /*PARENT::GetOutput() = d;*/ } //=========================================================================== @@ -54,15 +66,29 @@ /// Declares an AtomicBlackBox input corresponding to an inherited itk parameter /// which was declared by itkSetMacro/itkGetMacro /// The NAME **MUST** be the same than the itk parameter name -#define BBTK_DECLARE_ITK_PARAM(PARENT,NAME,TYPE) \ +#define BBTK_DECLARE_ITK_PARAM(NAME,TYPE) \ public: \ TYPE bbGetInput##NAME () \ - { return PARENT::Get##NAME(); } \ + { return itkParent::Get##NAME(); } \ void bbSetInput##NAME (TYPE d) \ - { PARENT::Set##NAME(d); \ + { itkParent::Set##NAME(d); \ /*bbSetModifiedStatus();*/ } //=========================================================================== +//============================================================================ +/// Defines the default bbUserProcess method for itk inherited black boxes +/// (calls itkParent::Update) +#define BBTK_ITK_PROCESS() \ + public: \ + inline void bbUserProcess() \ + { \ + bbtkDebugMessage("process",1,"**> Processing ["<(PARENT::GetInput()); } \ + { return dynamic_cast(vtkParent::GetInput()); } \ void bbSetInput##NAME (TYPE d) \ - { PARENT::SetInput( (vtkDataObject*) d); /*PARENT::GetOutput() = d;*/ } + { vtkParent::SetInput( (vtkDataObject*) d); /*vtkParent::GetOutput() = d;*/ } //=========================================================================== @@ -84,22 +86,32 @@ /// inherited vtk parameter /// which was declared by vtkSetMacro/vtkGetMacro /// The NAME **MUST** be the same than the vtk parameter name -#define BBTK_DECLARE_VTK_PARAM(PARENT,NAME,TYPE) \ +#define BBTK_DECLARE_VTK_PARAM(NAME,TYPE) \ public: \ TYPE bbGetInput##NAME () \ - { return PARENT::Get##NAME(); } \ + { return vtkParent::Get##NAME(); } \ void bbSetInput##NAME (TYPE d) \ - { PARENT::Set##NAME(d); \ + { vtkParent::Set##NAME(d); \ /*bbSetModifiedStatus();*/ } //=========================================================================== -//=========================================================================== -#define BBTK_VTK_DELETE(VTKPARENT) \ - void bbDelete() { \ - bbGetOutputOut()->SetSource(NULL); \ - VTKPARENT::Delete(); } -//=========================================================================== + +//============================================================================ +/// Defines the default bbUserProcess method for vtk inherited black boxes +/// (calls vtkParent::Update) +#define BBTK_VTK_PROCESS() \ + public: \ + inline void bbUserProcess() \ + { \ + bbtkDebugMessage("process",1,"**> Processing ["<SetSource(NULL); \ + bbtkDebugMessage("process",2,"<** Processing ["< itkParent; - BBTK_DECLARE_ITK_INPUT(itkParent,In,const T*); - BBTK_DECLARE_ITK_PARAM(itkParent,LowerThreshold,typename T::PixelType); - BBTK_DECLARE_ITK_PARAM(itkParent,UpperThreshold,typename T::PixelType); - BBTK_DECLARE_ITK_PARAM(itkParent,InsideValue,typename T::PixelType); - BBTK_DECLARE_ITK_PARAM(itkParent,OutsideValue,typename T::PixelType); - BBTK_DECLARE_ITK_OUTPUT(itkParent,Out,T*); - BBTK_PROCESS(itkParent::Update); - void bbDelete() { itkParent::UnRegister(); } + BBTK_DECLARE_ITK_INPUT(In,const T*); + BBTK_DECLARE_ITK_PARAM(LowerThreshold,typename T::PixelType); + BBTK_DECLARE_ITK_PARAM(UpperThreshold,typename T::PixelType); + BBTK_DECLARE_ITK_PARAM(InsideValue,typename T::PixelType); + BBTK_DECLARE_ITK_PARAM(OutsideValue,typename T::PixelType); + BBTK_DECLARE_ITK_OUTPUT(Out,T*); + BBTK_ITK_PROCESS(); + BBTK_ITK_DELETE(); void bbUserConstructor() { Init(); } void bbUserCopyConstructor() { Init(); } diff --git a/packages/itk/src/bbitkExtractImageFilter.h b/packages/itk/src/bbitkExtractImageFilter.h index b7ebbeb..a21de34 100644 --- a/packages/itk/src/bbitkExtractImageFilter.h +++ b/packages/itk/src/bbitkExtractImageFilter.h @@ -21,12 +21,12 @@ namespace bbitk T); typedef itk::ExtractImageFilter itkParent; - BBTK_DECLARE_ITK_INPUT(itkParent,In,const T*); - BBTK_DECLARE_ITK_PARAM(itkParent,ExtractionRegion,typename T::RegionType); - BBTK_DECLARE_ITK_OUTPUT(itkParent,Out,T*); - BBTK_PROCESS(itkParent::Update); - - void bbDelete() { itkParent::UnRegister(); } + BBTK_DECLARE_ITK_INPUT(In,const T*); + BBTK_DECLARE_ITK_PARAM(ExtractionRegion,typename T::RegionType); + BBTK_DECLARE_ITK_OUTPUT(Out,T*); + + BBTK_ITK_PROCESS(); + BBTK_ITK_DELETE(); }; diff --git a/packages/vtk/src/bbvtkMarchingCubes.h b/packages/vtk/src/bbvtkMarchingCubes.h index bd4f552..083d05d 100644 --- a/packages/vtk/src/bbvtkMarchingCubes.h +++ b/packages/vtk/src/bbvtkMarchingCubes.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkMarchingCubes.h,v $ Language: C++ - Date: $Date: 2008/05/07 06:31:37 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/05/07 07:26:51 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -50,10 +50,12 @@ namespace bbvtk public bbtk::AtomicBlackBox, public vtkMarchingCubes { - BBTK_BLACK_BOX_INTERFACE(MarchingCubes,bbtk::AtomicBlackBox); - - BBTK_DECLARE_VTK_INPUT(vtkMarchingCubes,In,vtkImageData *); - BBTK_DECLARE_VTK_OUTPUT(vtkMarchingCubes,Out,vtkPolyData *); + BBTK_VTK_BLACK_BOX_INTERFACE(MarchingCubes, + bbtk::AtomicBlackBox, + vtkMarchingCubes); + + BBTK_DECLARE_VTK_INPUT(In,vtkImageData *); + BBTK_DECLARE_VTK_OUTPUT(Out,vtkPolyData *); // For the 'Value' parameter, the standard bbtk macro does not work // as vtk Get/Set accessors have a parameter... @@ -64,13 +66,7 @@ namespace bbvtk void bbSetInputValue (double d) { vtkMarchingCubes::SetValue(0,d); } - - BBTK_PROCESS(DoProcess); - void DoProcess() { vtkMarchingCubes::Update(); } - - // Overload bbDelete to handle vtk reference counting - BBTK_VTK_DELETE(vtkMarchingCubes); - //void bbDelete() { Delete(); } + BBTK_VTK_PROCESS(); }; //======================================================================= diff --git a/packages/vtk/src/bbvtkMetaImageReader.xml b/packages/vtk/src/bbvtkMetaImageReader.xml index ff2fd33..7d33af4 100644 --- a/packages/vtk/src/bbvtkMetaImageReader.xml +++ b/packages/vtk/src/bbvtkMetaImageReader.xml @@ -15,16 +15,13 @@
    SetFileName(bbGetInputIn().c_str());
-   Update();
+   vtkParent::Update();
+   // We need to disconnect the output image from its source or the 
+   // vtk object will not be deleted as it 
+   // will be referenced by its output image
+   bbGetOutputOut()->SetSource(NULL);					
  
- -
-std::cout << "$$$$$$ constructing $$$$$"<     
-
  
-std::cout << "$$$$$$ deleting $$$$$"<