]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxViewer.cpp
_T
[creaImageIO.git] / src2 / creaImageIOWxViewer.cpp
index f298a21344ef5e747566684115900248c2f822ca..4a0f2835aabc5bf1732d6dc0ff2d1e71a34a880a 100644 (file)
@@ -5,13 +5,13 @@
 #include <vtkCamera.h>
 #include <vtkRenderer.h>
 #include <vtkImageData.h>
-
+#include <creawxVTKRenderWindowInteractor.h>
 #include <creaMessageManager.h>
 #include <stdio.h>
 #include <time.h>
 
 using namespace crea;
-
+// Memory tracking allocation
 namespace creaImageIO
 {
   
@@ -26,21 +26,11 @@ namespace creaImageIO
     {}
     
     void* Entry();
-    //    void SetImagesToPlay(std::vector<vtkImageData*> im);
-    //    void ShowImage(vtkImageData* v);
-    //   void StartIterator();
     void  OnExit();
        
   private:
-    //std::vector<vtkImageData*> mImagesToPlay;
-    //vtkImageViewer2* mViewer;
-    /// Associated wxvtk interactor
-    //crea::creawxVTKRenderWindowInteractor  *mInteractor;
-    //std::vector<vtkImageData*>::iterator i;
+
     WxViewer* mWxViewer;
-    
-    //    int mx1,mx2,my1,my2,mz1,mz2;
-    //    double mspx,mspy,mspz;
   };
   
   //=====================================================================
@@ -62,7 +52,7 @@ namespace creaImageIO
                 size)
   {
     wxMutexLocker lock(mMutex);
-    GimmickDebugMessage(1,"WxViewer::WxViewer"
+    GimmickDebugMessage(6,"WxViewer::WxViewer"
                        <<std::endl);
 
     mNeedRefresh = false;
@@ -71,8 +61,7 @@ namespace creaImageIO
     wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
 
        
-    // previewer
-       
+    // previewer       
     mInteractor = new crea::creawxVTKRenderWindowInteractor(this,-1);
     mInteractor->UseCaptureMouseOn();  
  
@@ -93,7 +82,7 @@ namespace creaImageIO
   WxViewer::~WxViewer()
   {
     wxMutexLocker lock(mMutex);
-    GimmickDebugMessage(1,"WxViewer::~WxViewer"
+    GimmickDebugMessage(6,"WxViewer::~WxViewer"
                        <<std::endl);
     // TO DO : desallocate cleanly
     //    delete mPlayer;
@@ -102,10 +91,10 @@ namespace creaImageIO
   //=====================================================================
 
   //================================================================
-  void WxViewer::SetImageVector(std::vector<ImagePointerHolder*>& pointers)
+   void WxViewer::SetImageVector(std::vector<boost::shared_ptr<ImagePointerHolder> >& pointers)
   {
        wxMutexLocker lock(mMutex);
-       GimmickMessage(1,"WxViewer::SetImageVector"<<std::endl);
+       GimmickDebugMessage(6,"WxViewer::SetImageVector"<<std::endl);
        imagePointers=pointers;
   }
 
@@ -116,7 +105,7 @@ namespace creaImageIO
        wxMutexLocker lock(mMutex);
        
     
-    GimmickMessage(10,"WxViewer::ShowNextImage() "
+    GimmickDebugMessage(10,"WxViewer::ShowNextImage() "
                   <<mCurrent+1<<"/"
                   <<imagePointers.size()<<std::endl);
     
@@ -124,7 +113,8 @@ namespace creaImageIO
        {
                if (mCurrent<imagePointers.size()) 
                {
-                       ImagePointerHolder* iph=imagePointers[mCurrent];
+                       boost::shared_ptr<ImagePointerHolder> iph = imagePointers[mCurrent];
+                       //ImagePointerHolder* iph= imagePointers[mCurrent];
                        vtkImageData* currIm=iph->Get();
                        ShowImage(currIm);
                        if ( currIm != mLastImageShown ) 
@@ -137,7 +127,8 @@ namespace creaImageIO
                else
                {
                        mCurrent = 0;
-                       ImagePointerHolder* iph=imagePointers[mCurrent];
+                       //ImagePointerHolder* iph=imagePointers[mCurrent];
+                       boost::shared_ptr<ImagePointerHolder> iph = imagePointers[mCurrent];
                        vtkImageData* currIm=iph->Get();
                        ShowImage(currIm);
                        if ( currIm != mLastImageShown ) 
@@ -154,22 +145,34 @@ namespace creaImageIO
   //=====================================================================
   void WxViewer::ShowImage(vtkImageData* im)
   {
-    GimmickDebugMessage(5,"WxViewer::ShowImage"
+    GimmickDebugMessage(6,"WxViewer::ShowImage"
                        <<std::endl);
     if (im==0) return;
 
     mViewer->SetInput(im);
-       
+
     mViewer->SetSlice( 0 );
-    
+
     int x1,x2,y1,y2,z1,z2;
     double spx,spy,spz;
     im->Update();
-    
+
+//std::cout << "in WxViewer::ShowImage PrintSelf() =";
+//im->PrintSelf(std::cout, vtkIndent(2));
+
     im->GetSpacing(spx,spy,spz);
-    im->GetExtent (x1,x2,y1,y2,z1,z2);
-    
+    //im->GetExtent (x1,x2,y1,y2,z1,z2);  // JPR
+    im->GetWholeExtent (x1,x2,y1,y2,z1,z2); 
+/*       
+std::cout << "in WxViewer::ShowImage GetWholeExtent ext =";
+       std::cout << "   [x1]=" << x1;
+       std::cout << "   [x2]=" << x2;
+       std::cout << "   [y1]=" << y1;
+       std::cout << "   [y2]=" << y2;
+       std::cout << "   [z1]=" << z1;
+       std::cout << "   [z2]=" << z2;
+std::cout << std::endl; 
+*/   
     if ((x1!=mx1) ||
        (x2!=mx2) ||
        (y1!=my1) ||
@@ -190,32 +193,28 @@ namespace creaImageIO
        mspx = spx;
        mspy = spy;
        mspz = spz;
-       
+
        double *range = im->GetScalarRange();
-        mViewer->SetColorWindow(range[1] - range[0]);
-        mViewer->SetColorLevel(0.5 * (range[1] + range[0]));
+       mViewer->SetColorWindow(range[1] - range[0]);
+       mViewer->SetColorLevel(0.5 * (range[1] + range[0]));
 
-        mViewer->GetRenderer()->ResetCamera();
+       mViewer->GetRenderer()->ResetCamera();
        double bounds[6];
 
+       mViewer->GetRenderer()->ComputeVisiblePropBounds(bounds);
 
-        mViewer->GetRenderer()->ComputeVisiblePropBounds(bounds);
-
-         
-        mViewer->GetRenderer()->ResetCameraClippingRange(bounds);
-
-         
-         }
-
+       mViewer->GetRenderer()->ResetCameraClippingRange(bounds);
+       mViewer->GetRenderer()->SetBackground(0.1,0.1,0.2);  
+      }
   } 
   //================================================================
   
-   //================================================================
+  //================================================================
   bool WxViewer::RefreshIfNecessary()
   {
     if (mNeedRefresh)
       {
-       GimmickMessage(1,"WxViewer : Refreshing"<<std::endl);
+       GimmickDebugMessage(10,"WxViewer : Refreshing"<<std::endl);
 
        mInteractor->Render();
        mNeedRefresh = false;
@@ -223,15 +222,18 @@ namespace creaImageIO
       }
     return false;
   }
+  //================================================================
+  
   //==================================================
   void WxViewer::StopPlayer()
   {
          wxMutexLocker lock(mMutex);
-         if (mPlayer==0) return;
+         if (mPlayer==0 ) return;
          mPlayer->Delete();  
          mPlayer=0;
   }
-
+  //================================================================
+  
   //==================================================
   void WxViewer::StartPlayer()
        {
@@ -259,7 +261,7 @@ namespace creaImageIO
   void*  WxViewerPlayer::Entry()
   {
          
-    GimmickMessage(1,"WxViewerPlayer::Entry()"<<std::endl);
+    GimmickDebugMessage(6,"WxViewerPlayer::Entry()"<<std::endl);
        
        while(!TestDestroy())
            { 
@@ -268,7 +270,7 @@ namespace creaImageIO
                        ::wxWakeUpIdle();
                        clock_t endwait;
                        endwait = clock () + 0.2 * CLOCKS_PER_SEC ;
-                       while (clock() < endwait) {}
+                       while (clock() < endwait ) {}
                        
       }
     return 0;
@@ -279,7 +281,7 @@ namespace creaImageIO
   //=====================================================================
   void WxViewerPlayer::OnExit()
   {
-    GimmickMessage(1,"WxViewerPlayer::OnExit() "<<std::endl);
+    GimmickDebugMessage(6,"WxViewerPlayer::OnExit() "<<std::endl);
   }