]> Creatis software - bbtk.git/commitdiff
*** empty log message ***
authorguigues <guigues>
Fri, 9 May 2008 10:39:46 +0000 (10:39 +0000)
committerguigues <guigues>
Fri, 9 May 2008 10:39:46 +0000 (10:39 +0000)
18 files changed:
kernel/src/bbtkPackage.cxx
kernel/src/bbtkVtkBlackBoxMacros.h
packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx
packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h
packages/vtk/src/bbvtkImagePlanes.cxx
packages/vtk/src/bbvtkImagePlanes.h
packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx
packages/vtk/src/bbvtkIsoSurfaceExtractor.h
packages/vtk/src/bbvtkMIPCreator.cxx
packages/vtk/src/bbvtkMIPCreator.h
packages/vtk/src/bbvtkMetaImageReader.xml
packages/vtk/src/bbvtkSegmentationConnectivity.cxx
packages/vtk/src/bbvtkSegmentationConnectivity.h
packages/wxvtk/bbs/appli/ExampleSimpleSlicer.bbs
packages/wxvtk/src/bbwxvtkViewer2D.cxx
packages/wxvtk/src/bbwxvtkViewer3D.cxx
packages/wxvtk/src/bbwxvtkViewer3D.h
packages/wxvtk/src/wxVTKRenderWindowInteractor.cxx

index 31f5a13a8b2bbc5895f80b4f9763744706699aa8..236953e51c7a65482bbf9f26adc1a9cec54355dc 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkPackage.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/05/06 13:45:12 $
-  Version:   $Revision: 1.17 $
+  Date:      $Date: 2008/05/09 10:39:46 $
+  Version:   $Revision: 1.18 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See doc/license.txt or
@@ -111,15 +111,17 @@ namespace bbtk
                                                const std::string& descname)
   {
     // Try to release descriptor
-    bbtkDebugMessage("package",3,"--- Trying to release descriptor '"
-                    <<descname<<"'"<<bbtkendl);
     std::string packname = pack.lock()->GetName();
 
+    bbtkDebugMessage("package",5,"--- Releasing descriptor '"
+                    <<packname<<"::"<<descname<<"'"<<bbtkendl);
+
+
     Package::BlackBoxMapType::iterator desc = 
       pack.lock()->GetBlackBoxMap().find(descname);
     if (desc ==  pack.lock()->GetBlackBoxMap().end())
       {
-       bbtkDebugMessage("package",3,
+       bbtkDebugMessage("package",5,
                         "    Descriptor has already been released"
                         <<bbtkendl);
        return;
@@ -131,11 +133,11 @@ namespace bbtk
     // if it is dead : remove it 
     if (pdesc.expired()) 
       {
-       bbtkDebugMessage("package",2,"   '"<<packname<<"::"<<descname<<"' Descriptor expired"<<bbtkendl);
+       bbtkDebugMessage("package",2," ==> '"<<packname<<"::"<<descname<<"' Descriptor expired"<<bbtkendl);
        if (pack.expired()) 
          {
            bbtkDebugMessage("package",2,
-                            "    ... and caused its package death"
+                            "     ... and caused its package death"
                             <<bbtkendl);
            return;
          }
@@ -145,7 +147,7 @@ namespace bbtk
       }
     else 
       {
-       bbtkDebugMessage("package",3,"    ... Descriptor still alive ("
+       bbtkDebugMessage("package",5,"    ... Descriptor still alive ("
                         <<pdesc.use_count()<<" refs)"
                         <<bbtkendl);
        pack.lock()->GetBlackBoxMap()[descname] = pdesc.lock();
@@ -166,7 +168,7 @@ namespace bbtk
     long ndesc = pack.lock()->GetBlackBoxMap().size();
     long nrefs = pack.use_count();
 
-    bbtkDebugMessage("package",2," "<<nrefs<<" refs / "
+    bbtkDebugMessage("package",5," "<<nrefs<<" refs / "
                     <<ndesc<<" descr / dyn="
                     <<dyn<<std::endl);
 
@@ -179,7 +181,7 @@ namespace bbtk
     //  and descallocated (reset) by PACKAGENAMEDeletePackage())
     if (nrefs == ndesc + dyn) 
       {
-       bbtkDebugMessage("package",2,
+       bbtkDebugMessage("package",5,
                         " -> No more external ref : checking descriptors"
                         <<bbtkendl);
        // We must take care that removing refs on descriptors 
@@ -212,7 +214,7 @@ namespace bbtk
            // Is package still alive ?
            if (pack.expired()) 
              {
-               bbtkDebugMessage("package",2,"--- Package::Release('"<<
+               bbtkDebugMessage("package",1,"--- Package::Release('"<<
                                 packname
                                 <<"') : package expired during release : bailing out"<<bbtkendl);
                break;
@@ -232,7 +234,7 @@ namespace bbtk
        
       }
     
-    bbtkDebugMessage("package",1,"<== Package::Release('"<<
+    bbtkDebugMessage("package",2,"<== Package::Release('"<<
                     packname<<"')"<<bbtkendl);
     if (!pack.expired())
       {
@@ -247,7 +249,7 @@ namespace bbtk
       }
     else 
       {
-       bbtkDebugMessage("package",1,"   ... Package has been released"
+       bbtkDebugMessage("package",1," ... Package has been released"
                         <<std::endl);
       }
   }
@@ -272,7 +274,7 @@ namespace bbtk
     long ndesc = pack.lock()->GetBlackBoxMap().size();
     long nrefs = pack.use_count();
 
-    bbtkDebugMessage("package",3," "<<nrefs<<" refs / "
+    bbtkDebugMessage("package",5," "<<nrefs<<" refs / "
                     <<ndesc<<" descr / dynamically loaded = "
                     <<dyn<<std::endl);
 
@@ -292,7 +294,7 @@ namespace bbtk
     // then put it in the static list mReleasedDynamicallyLoadedPackages
     UnLoadDynamicLibrary(pack,false);
         
-    bbtkDebugMessage("package",3,"<== Package::ReleaseBlackBoxDescriptor('"<<
+    bbtkDebugMessage("package",4,"<== Package::ReleaseBlackBoxDescriptor('"<<
                     packname<<"','"<<dname<<"'): refs="
                     <<descr.use_count()<<bbtkendl);
     /*
@@ -527,7 +529,7 @@ namespace bbtk
     p->SetDocURL(doc);
     p->SetDocRelativeURL(reldoc);
     
-    bbtkDebugMessage("package",1,"<== Package::CreateFromDynamicLibrary("
+    bbtkDebugMessage("package",2,"<== Package::CreateFromDynamicLibrary("
                     <<libname<<") .. OK"<<std::endl);
     return p;
   }
@@ -545,14 +547,14 @@ namespace bbtk
     
     
     std::string packname = pack.lock()->GetName();
-    bbtkDebugMessage("package",3,"==> Package::UnLoadDynamicLibrary('"
+    bbtkDebugMessage("package",5,"==> Package::UnLoadDynamicLibrary('"
                     <<packname<<"')"
                     <<std::endl);
     
     if (!pack.lock()->GetBlackBoxMap().empty())
       {
        
-       bbtkDebugMessage("package",3,"   Package not empty ... abort"
+       bbtkDebugMessage("package",5,"   Package not empty ... abort"
                         <<std::endl);
        return;
        /*
@@ -573,19 +575,20 @@ namespace bbtk
     if (doit) 
       {
        UnLoad(pack);
-       bbtkDebugMessage("package",3,"   ... dynamic library closed"
+       bbtkDebugMessage("package",5,"==> dynamic library for package '"
+                        <<packname<<"' closed"
                         <<std::endl);    
       }
     else 
       {
        mReleasedDynamicallyLoadedPackages.insert(pack);
-       bbtkDebugMessage("package",3,
-                        "   ... package put in the 'to unload' list"
+       bbtkDebugMessage("package",1,"==> package '"<<packname
+                        <<"' put in the 'to unload' list"
                         <<std::endl);
 
       }
 
-    bbtkDebugMessage("package",3,"<== Package::UnLoadDynamicLibrary('"
+    bbtkDebugMessage("package",5,"<== Package::UnLoadDynamicLibrary('"
                     <<packname<<"')"
                     <<std::endl);
     
@@ -597,7 +600,7 @@ namespace bbtk
   /// see UnLoadDynamicLibrary and ReleaseBlackBoxDescriptor
   void Package::UnLoadReleasedDynamicallyLoadedPackages()
   {
-    bbtkDebugMessage("package",2,"==> Package::UnLoadReleasedDynamicallyLoadedPackages()"<<std::endl);
+    bbtkDebugMessage("package",5,"==> Package::UnLoadReleasedDynamicallyLoadedPackages()"<<std::endl);
 
     std::set<Package::WeakPointer>::iterator i;
     for (i=mReleasedDynamicallyLoadedPackages.begin();
@@ -606,7 +609,7 @@ namespace bbtk
       {
        if (!i->expired()) UnLoad(*i);
       }
-    bbtkDebugMessage("package",2,"<== Package::UnLoadReleasedDynamicallyLoadedPackages()"<<std::endl);
+    bbtkDebugMessage("package",5,"<== Package::UnLoadReleasedDynamicallyLoadedPackages()"<<std::endl);
   }
   //==========================================================================
 
@@ -614,7 +617,7 @@ namespace bbtk
   void Package::UnLoad(Package::WeakPointer pack)
   {
     std::string packname = pack.lock()->GetName();
-    bbtkDebugMessage("package",2,"==> Package::UnLoad("<<packname<<")"<<std::endl);
+    bbtkDebugMessage("package",6,"==> Package::UnLoad("<<packname<<")"<<std::endl);
 
     Package* p = pack.lock().get();
     
@@ -630,7 +633,10 @@ namespace bbtk
     FreeLibrary(h);
 #endif
 
-    bbtkDebugMessage("package",2,"   ... dynamic library unloaded"<<std::endl);
+    bbtkDebugMessage("package",1,"==> dynamic library for package '"
+                    <<packname<<"' closed"
+                    <<std::endl);    
+    bbtkDebugMessage("package",6,"   ... dynamic library unloaded"<<std::endl);
   }
   //==========================================================================
 
index bc2400fb20a1b1811fba91a138d287dc62fbcb4a..560e304b4998e9d14841cb8991fb4974c5691c46 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkVtkBlackBoxMacros.h,v $
   Language:  C++
-  Date:      $Date: 2008/05/07 12:59:23 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2008/05/09 10:39:46 $
+  Version:   $Revision: 1.4 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
 #define BBTK_VTK_DELETE()                                              \
   void bbDelete() {                                                    \
     bbGetOutputOut()->SetSource(NULL);                                 \
-    /*    vtkParent::SetReferenceCount(0);*/                           \
-    bbmDescriptorPointer.reset();                                      \
     vtkParent::Delete();                                               \
   }
 
+//    bbmDescriptorPointer.reset();                                    \
+
 #define BBTK_VTK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX,VTKPARENT)   \
   BBTK_BLACK_BOX_INTERFACE(CLASS,PARENTBLACKBOX);                      \
   typedef VTKPARENT vtkParent;                                         \
index 3fe9fe370701bd9d566cc48fdd68fb62d9854f5c..0047b30bce1fb728c559141438289c86389f4307 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbitkvtkitkImage2vtkImageData.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:50 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/05/09 10:39:46 $
+  Version:   $Revision: 1.3 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -64,13 +64,11 @@ namespace bbitkvtk
        typename ItkToVtkConnection::Pointer conv = ItkToVtkConnection::New();
        conv->SetInput( this->bbGetInputIn().get<itkImageType*>() );
        conv->Update();
-       vtkImageData* o = vtkImageData::New();
-       //      o->SetReferenceCount(10);
-       o->DeepCopy(conv->GetOutput());
-
-       //      o->Print(std::cout);
-       if (bbGetOutputOut()) bbGetOutputOut()->Delete();
-       bbSetOutputOut(o);
+       if (bbGetOutputOut()) bbGetOutputOut()->UnRegister(NULL);
+       bbSetOutputOut(conv->GetOutput());
+       //      bbGetOutputOut()->DebugOn();
+       bbGetOutputOut()->Register(NULL);
+       bbGetOutputOut()->SetSource(NULL);
       }
     catch( itk::ExceptionObject & e) 
       {
@@ -78,12 +76,24 @@ namespace bbitkvtk
                  <<bbtk::TypeName<T>()
                  <<">::Convert() : "<<e);
       } 
-
-    
-
     bbtkDebugDecTab("Core",9);
   }
 
+  void itkImage2vtkImageData::bbUserConstructor()
+  {
+    bbSetOutputOut(NULL);
+  }
+  void itkImage2vtkImageData::bbUserCopyConstructor()
+  {
+    bbSetOutputOut(NULL);
+  }
+  void itkImage2vtkImageData::bbUserDestructor()
+  {
+    if (bbGetOutputOut()) 
+      {
+       bbGetOutputOut()->UnRegister(NULL);
+      }
+  }
 
 
 }
index d2f9564fdd896945202a4fe529f04144052d0240..e3991b2abce38ff4ad50e5a27199124a148473bf 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbitkvtkitkImage2vtkImageData.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:50 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2008/05/09 10:39:46 $
+  Version:   $Revision: 1.4 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -46,7 +46,9 @@ namespace bbitkvtk
     BBTK_DECLARE_OUTPUT(Out,vtkImageData*);
     BBTK_PROCESS(Convert);
     void Convert();
-    void bbUserConstructor() { bbSetOutputOut(0); }
+    void bbUserConstructor();
+    void bbUserCopyConstructor();
+    void bbUserDestructor();
   private:
     // Convert method template on type of the itk image 
     // embedded in the input itkImage*
index 6f46cf34b02d28739e6ff816e22b15262d92d34b..4241c6912daafd9275e21d52dc52f3e62fd3e562 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkImagePlanes.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:52 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/05/09 10:39:46 $
+  Version:   $Revision: 1.3 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -110,10 +110,18 @@ namespace bbvtk
      bbSetOutputPlaneX(planeWidgetX);
      bbSetOutputPlaneY(planeWidgetY);
      bbSetOutputPlaneZ(planeWidgetZ);
+
+     picker->UnRegister(NULL);
    }
 
 //---------------------------------------------------------------------
-
+  void ImagePlanes::bbUserDestructor()
+  {
+    planeWidgetX->Delete();
+    planeWidgetY->Delete();
+    planeWidgetZ->Delete();
+  }
+  
    void ImagePlanes::Process()
    {
      if (bbGetInputIn()!=0)
index df253077ee0e91a14699e756fa59ec458d731ef7..d0b0f9b85010ca986b180df3459a854c28980cff 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkImagePlanes.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:52 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.4 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -70,6 +70,7 @@ namespace bbvtk
   protected:
     virtual void bbUserConstructor();
     virtual void bbUserCopyConstructor();
+    virtual void bbUserDestructor();
     void Init();
   private:
     vtkImagePlaneWidget* planeWidgetX;
index 7b23c9af0738fd9b22e19b9339a14a3e872d8455..1559d97f85d20cf889d1e5890846989b2b1f9c48 100644 (file)
@@ -4,8 +4,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkIsoSurfaceExtractor.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/24 12:56:41 $
-  Version:   $Revision: 1.5 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  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
@@ -49,19 +49,26 @@ namespace bbvtk
      Init();
    }
 
+   void IsoSurfaceExtractor::bbUserDestructor() 
+   { 
+     marchingcubes->Delete();
+     polydatamapper->Delete();
+     vtkactor->Delete();
+  }
+
    void IsoSurfaceExtractor::Init() 
    { 
      firsttime=true;
 
-         bbSetInputIn(NULL);
-         //     bbSetInputInVtkObject(NULL);
-        bbSetInputRenderer(NULL);
+     bbSetInputIn(NULL);
+     //     bbSetInputInVtkObject(NULL);
+     bbSetInputRenderer(NULL);
      bbSetInputIsovalue(400);
      bbSetInputOpacity(1);
         
-        marchingcubes  = vtkMarchingCubes::New();
+     marchingcubes     = vtkMarchingCubes::New();
      polydatamapper    = vtkPolyDataMapper::New();
-     vtkactor        = vtkActor::New();
+     vtkactor           = vtkActor::New();
 
      polydatamapper->SetInput(marchingcubes->GetOutput());
      vtkactor->SetMapper(polydatamapper);
@@ -80,7 +87,9 @@ namespace bbvtk
      marchingcubes->SetValue(0,  bbGetInputIsovalue() );
      marchingcubes->Update();
      
-     vtkactor->GetProperty()->SetColor( bbGetInputColour()[0],  bbGetInputColour()[1], bbGetInputColour()[2] );
+     vtkactor->GetProperty()->SetColor( bbGetInputColour()[0],  
+                                       bbGetInputColour()[1], 
+                                       bbGetInputColour()[2] );
      
      
      vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
index cefe1a41780ff55a51486f012db82e0e81b66d36..00c5b46c8e915f7c131ae37a64bc36ef638f3e9e 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkIsoSurfaceExtractor.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/24 14:11:31 $
-  Version:   $Revision: 1.7 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.8 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -66,7 +66,7 @@ namespace bbvtk
     BBTK_DECLARE_INPUT(Isovalue,double);
     BBTK_DECLARE_INPUT(Opacity,double);
     BBTK_DECLARE_INPUT(Colour,std::vector<double>);
-       BBTK_DECLARE_INPUT(Renderer,vtkRenderer *);
+    BBTK_DECLARE_INPUT(Renderer,vtkRenderer *);
     BBTK_DECLARE_OUTPUT(Out,vtkProp3D *);
     
     BBTK_PROCESS(DoProcess);
@@ -75,6 +75,7 @@ namespace bbvtk
   protected:
     virtual void bbUserConstructor();
     virtual void bbUserCopyConstructor();
+    virtual void bbUserDestructor();
     void Init();
   };
   
index be2a7d49c54f218c7a53f37d0ffd471c420e54c6..39d615f3651c207caba05d287534b158cce37fde 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkMIPCreator.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:52 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.3 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -74,6 +74,14 @@ namespace bbvtk
     bbSetOutputOut(mVolume);
 }
 
+   void MIPCreator::bbUserDestructor() 
+   { 
+     mCast->Delete();
+     mMIP->Delete();
+     mMapper->Delete();
+     mVolume->Delete();
+
+   }
 //---------------------------------------------------------------------
 
    void MIPCreator::Process()
index 28f43583f28ecfe32822c7f114e9aca6a96b8297..1dbebde6ae0e4704becb0182ed699ceae0b48cec 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkMIPCreator.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:52 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.4 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -66,6 +66,7 @@ namespace bbvtk
   protected:
     virtual void bbUserConstructor();
     virtual void bbUserCopyConstructor();
+    virtual void bbUserDestructor();
     void Init();
   private:
     vtkImageShiftScale* mCast;
index a557719fd21e26ca4b078159098d810f40e09d4f..98540bd9e7c6c87f5cc5d84b126a52dd81335936 100644 (file)
  <process><PRE>
    SetFileName(bbGetInputIn().c_str());
    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);                                        
  </PRE></process>
 
 </blackbox>  
index e7172541089a7452181d7417db5f936cecddda02..ff5d11f6d4ffd07278f6a75c2b4de5709842b24f 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkSegmentationConnectivity.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/24 14:11:31 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.3 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
 namespace bbvtk
 {
 
-       BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SegmentationConnectivity)
-       BBTK_BLACK_BOX_IMPLEMENTATION(SegmentationConnectivity,bbtk::AtomicBlackBox);
-
-
-       void SegmentationConnectivity::bbUserConstructor() 
-   { 
-      bbSetInputIn(NULL);
-         std::vector<int> position;
-         position.push_back(0);
-         position.push_back(0);
-         position.push_back(0);
-         bbSetInputPositionXYZ(position);
-         std::vector<int> threshold;
-         threshold.push_back(0);
-         threshold.push_back(0);
-         bbSetInputThresholdMinMax(threshold);
-         bbSetOutputOut(NULL);
-         thresh2 = vtkImageThreshold::New();
-         thresh2->SetInValue(255);
-         thresh2->SetOutputScalarTypeToUnsignedShort();
-         thresh2->SetOutValue(0);
-         cast2 = vtkImageCast::New();
-         cast2->SetInput(thresh2->GetOutput());
-         cast2->SetOutputScalarTypeToUnsignedChar();
-         connect2 = vtkImageSeedConnectivity::New();
-         connect2->SetInput(cast2->GetOutput());
-         connect2->SetInputConnectValue(255);
-         connect2->SetOutputConnectedValue(255);
-         connect2->SetOutputUnconnectedValue(0);
-         cast4 = vtkImageCast::New();
-         cast4->SetInput(connect2->GetOutput());
-         cast4->SetOutputScalarTypeToUnsignedShort();
-   }
-
+  BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SegmentationConnectivity);
+  BBTK_BLACK_BOX_IMPLEMENTATION(SegmentationConnectivity,
+                               bbtk::AtomicBlackBox);
+  
+  
+  void SegmentationConnectivity::bbUserConstructor() 
+  { 
+    bbSetInputIn(NULL);
+    std::vector<int> position;
+    position.push_back(0);
+    position.push_back(0);
+    position.push_back(0);
+    bbSetInputPositionXYZ(position);
+    std::vector<int> threshold;
+    threshold.push_back(0);
+    threshold.push_back(0);
+    bbSetInputThresholdMinMax(threshold);
+    bbSetOutputOut(NULL);
+    thresh2 = vtkImageThreshold::New();
+    thresh2->SetInValue(255);
+    thresh2->SetOutputScalarTypeToUnsignedShort();
+    thresh2->SetOutValue(0);
+    cast2 = vtkImageCast::New();
+    cast2->SetInput(thresh2->GetOutput());
+    cast2->SetOutputScalarTypeToUnsignedChar();
+    connect2 = vtkImageSeedConnectivity::New();
+    connect2->SetInput(cast2->GetOutput());
+    connect2->SetInputConnectValue(255);
+    connect2->SetOutputConnectedValue(255);
+    connect2->SetOutputUnconnectedValue(0);
+    cast4 = vtkImageCast::New();
+    cast4->SetInput(connect2->GetOutput());
+    cast4->SetOutputScalarTypeToUnsignedShort();
+  }
+  
+  
+  void SegmentationConnectivity::bbUserDestructor() 
+  { 
+    thresh2->Delete();
+    cast2->Delete();
+    connect2->Delete();
+    cast4->Delete();
+  }
 
   void SegmentationConnectivity::DoProcess()
   {
-       vtkImageData *imagedata = bbGetInputIn();
-       imagedata->UpdateInformation();
-       imagedata->SetUpdateExtent(imagedata->GetWholeExtent());
-       imagedata->Update();
-       thresh2->ThresholdBetween(3000, 3001);
-       thresh2->SetInput(imagedata);
-       thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]);
-       thresh2->Update();
-       cast2->Update();
-       connect2->RemoveAllSeeds ();
-       connect2->AddSeed( bbGetInputPositionXYZ()[0] , bbGetInputPositionXYZ()[1] , bbGetInputPositionXYZ()[2] );
-       connect2->Update();
-       cast4->Update();
-
+    vtkImageData *imagedata = bbGetInputIn();
+    imagedata->UpdateInformation();
+    imagedata->SetUpdateExtent(imagedata->GetWholeExtent());
+    imagedata->Update();
+    thresh2->ThresholdBetween(3000, 3001);
+    thresh2->SetInput(imagedata);
+    thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]);
+    thresh2->Update();
+    cast2->Update();
+    connect2->RemoveAllSeeds ();
+    connect2->AddSeed( bbGetInputPositionXYZ()[0] , bbGetInputPositionXYZ()[1] , bbGetInputPositionXYZ()[2] );
+    connect2->Update();
+    cast4->Update();
+    
     bbSetOutputOut(cast4->GetOutput() );         
   }
-
+  
 
 }// EO namespace bbvtk
 
index 213cbf888b2ada93b94e61f4f1215a278a8fde12..a9581630673689ad87941ca6ab0d1c38aac5daf9 100644 (file)
@@ -4,8 +4,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkSegmentationConnectivity.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/24 14:11:31 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.3 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -59,6 +59,7 @@ namespace bbvtk
 
   protected:
     virtual void bbUserConstructor();
+    virtual void bbUserDestructor();
 
   private:
        vtkImageCast                            *cast2;
index 536bce58d333c258f99c37aa3841073d119154a0..2fe619a64f1eab0f5fa1977ef8976bb37e1648d8 100644 (file)
@@ -13,7 +13,8 @@ load std
 set viewer.WinTitle "ExampleSimpleSlicer"
 set viewer.WinWidth 350
 set viewer.WinHeight 400
-set viewer.Slice 20
+# Crashes ! why ?
+#set viewer.Slice 20
 
 exec viewer
 
index a6ecfa24a8c843b6310cb655c39acd4cf2011718..9c3a6c96de91f5bfc02ed9f804c7f65ee6327470 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer2D.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:53 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.4 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -66,8 +66,20 @@ namespace bbwxvtk
   
   Viewer2DWidget::~Viewer2DWidget()
   {
+    //    delete wxvtkrenderwindowinteractor;
+    // pourquoi pas wxvtkrenderwindowinteractor->Delete(); // JP
+    // LG : because it has been allocated with operator new not method ::New 
+    // we want to force its destruction without taking care of vtk ref counting
+    // on the contrary the following vtk objects are deleted with vtk Delete
+    if (backImageData)
+      {
+       backImageData->UnRegister(NULL);
+      }
+    if (imageViewer) 
+      {
+       imageViewer->Delete();
+      }
     delete wxvtkrenderwindowinteractor;
-// pourquoi pas wxvtkrenderwindowinteractor->Delete(); // JP
   }
   
   //-------------------------------------------------------------------------
@@ -77,24 +89,23 @@ namespace bbwxvtk
 
   void Viewer2DWidget::UpdateView()
   {
-
-    if (imageViewer==NULL){
-      imageViewer      = vtkImageViewer2::New();
-      imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor );
-    }
-
-    // Viewer2D*  mbbtkViewer2D = (Viewer2D*)GetBlackBox();
-
-
-    
-    //  imageViewer->SetSliceOrientation(((Viewer2D*)GetBlackBox())->bbGetInputOrientation());
-    
-
-    if ( backImageData != mBox->bbGetInputIn() )
+    std::cout << "Viewer2DWidget::UpdateView()" << std::endl;
+    std::cout << "slice="<<mBox->bbGetInputSlice()<<std::endl;
+    if ( (mBox->bbGetInputIn()!=NULL) &&
+        (backImageData != mBox->bbGetInputIn()) )
       {
+       if (imageViewer==NULL)
+         {
+           imageViewer = vtkImageViewer2::New();
+           imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor );
+         }
+       
+       if (backImageData) backImageData->UnRegister(NULL);
        backImageData = mBox->bbGetInputIn();
+       backImageData->Register(NULL);
        imageViewer->SetInput( backImageData );
        backImageData->Update();
+
        int x1,x2,y1,y2,z1,z2;
        double spx,spy,spz;
        backImageData->GetSpacing(spx,spy,spz);
@@ -124,30 +135,41 @@ namespace bbwxvtk
     // mBox->bbIsShown() is necessary to be sure that the wxWindow is already 
     // created and displayed. 
     // Else when slice != 0 we get an X Window System error with wxGTK
-    if ((backImageData!=NULL)&&(mBox->bbIsShown()))
+    if ((imageViewer!=NULL)&&
+       (backImageData!=NULL)&&
+       (mBox->bbIsShown()))
       {
        int z = mBox->bbGetInputSlice();
-       //      std::cout << "slice = "<<z<<std::endl;
+       std::cout << "slice = "<<z<<std::endl;
        int ext[6];
        backImageData->GetWholeExtent(ext);
 
-       //      std::cout << "ext = "<<ext[4]<<" - "<<ext[5]<<std::endl;
+       std::cout << "ext = "<<ext[4]<<" - "<<ext[5]<<std::endl;
 
        if (z<ext[4]) { z=ext[4]; }
        if (z>=ext[5]) { z=ext[5]-1; }
        // LG : SetZSlice does not exist anymore in vtk 5 !
+       /*
+#if (VTK_MAJOR_VERSION >= 5)
+       imageViewer->SetSlice( 0 );
+#else
+       imageViewer->SetZSlice( 0 );
+#endif
+
+
+       
+       wxvtkrenderwindowinteractor->Render();
+       */
 
 #if (VTK_MAJOR_VERSION >= 5)
        imageViewer->SetSlice( z );
 #else
        imageViewer->SetZSlice( z );
 #endif
-
+       wxvtkrenderwindowinteractor->Render();
 
       }
-    
-    wxvtkrenderwindowinteractor->Render();
-    //    wxvtkrenderwindowinteractor->Refresh();
+
     
 
     //Refresh();
@@ -167,6 +189,11 @@ namespace bbwxvtk
 
   void Viewer2D::Process() 
   { 
+    // LG : Bug when initial slice != 0 on first time 
+    // (see wxvtk/appli/ExampleSimpleSlicer)
+    // I think there is a problem with rendering before window 
+    // has been reparented ... we have to check this 
+
     ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView();
     bbSetOutputOut( bbGetInputSlice() );
   }
index b81a1dd4700d0f5abc8f367c716643452319632f..2750a33f8aa90f93960343707e478379c8d97543 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer3D.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/05/07 12:59:23 $
-  Version:   $Revision: 1.4 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.5 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -28,7 +28,6 @@
 #include "bbwxvtkPackage.h"
 
 #include "vtkCamera.h"
-#include "vtkInteractorStyleTrackballCamera.h"
 
 
 
@@ -52,7 +51,7 @@ namespace bbwxvtk
    renderwindow->AddRenderer(renderer);
    wxvtkrenderwindowinteractor->SetRenderWindow(renderwindow);
    
-   vtkInteractorStyleTrackballCamera *interactorstyle = vtkInteractorStyleTrackballCamera ::New();
+   interactorstyle = vtkInteractorStyleTrackballCamera ::New();
    interactorstyle->SetInteractor (  wxvtkrenderwindowinteractor );
    wxvtkrenderwindowinteractor->SetInteractorStyle( interactorstyle );
    
@@ -79,7 +78,10 @@ namespace bbwxvtk
   //-------------------------------------------------------------------------
   Viewer3DWidget::~Viewer3DWidget()
   {
-    wxvtkrenderwindowinteractor->Delete();
+    renderwindow->Delete();
+    renderer->Delete();
+    interactorstyle->Delete();
+    delete wxvtkrenderwindowinteractor;
   }
   //-------------------------------------------------------------------------
   
index a9f441f8047abc647d8aee7e86d2768341386180..6eb48f06ee5d7131da0274958cf327afcd9be3a6 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer3D.h,v $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:53 $
-  Version:   $Revision: 1.5 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  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
 
 #include <vtkRenderer.h>
 #include <vtkRenderWindow.h>
+#include <vtkInteractorStyleTrackballCamera.h>
 
 #include "bbtkWxBlackBox.h"
 #include "wxVTKRenderWindowInteractor.h"
 
 
 
+
 namespace bbwxvtk
 {
   class Viewer3D; 
@@ -62,6 +64,7 @@ namespace bbwxvtk
     Viewer3D                     *mBox;
     vtkRenderer                  *renderer;
     vtkRenderWindow              *renderwindow;
+    vtkInteractorStyleTrackballCamera *interactorstyle;
     wxVTKRenderWindowInteractor  *wxvtkrenderwindowinteractor;
   };
   
index a7ac807a4e679172df220de4ea2741b44626e524..17b39bd15be92aecedcc47bbe6648e93404124c8 100644 (file)
@@ -3,8 +3,8 @@
   Program:   Visualization Toolkit
   Module:    $RCSfile: wxVTKRenderWindowInteractor.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/03/03 13:14:28 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/05/09 10:39:47 $
+  Version:   $Revision: 1.2 $
 
   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
   All rights reserved.
@@ -186,6 +186,7 @@ wxVTKRenderWindowInteractor::wxVTKRenderWindowInteractor(wxWindow *parent,
 wxVTKRenderWindowInteractor::~wxVTKRenderWindowInteractor()
 {   
   // LG : trompe la mort !
+  SetRenderWindow(NULL);
   SetReferenceCount(0);
 }
 //---------------------------------------------------------------------------