]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxViewer.cpp
Fixed Bugs with filter. Added Layer Diagram to documentation.
[creaImageIO.git] / src2 / creaImageIOWxViewer.cpp
index a566189298693f8103cbfd9a490b3b7e8b0e71c2..2b473a22703f87773c3abe9c668fbe6c538d010a 100644 (file)
@@ -65,6 +65,9 @@ namespace creaImageIO
     GimmickDebugMessage(1,"WxViewer::WxViewer"
                        <<std::endl);
 
+    mNeedRefresh = false;
+    mLastImageShown = NULL;
+
     wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
 
        
@@ -162,12 +165,18 @@ namespace creaImageIO
   void WxViewer::ShowNextImage()
   {
     wxMutexLocker lock(mMutex);
+       
+    /*
     GimmickMessage(1,"WxViewer::ShowNextImage() "
                   <<mCurrent+1<<"/"
                   <<images.size()<<std::endl);
+    */
+    
     if (mCurrent<images.size()) 
       {
        ShowImage(images[mCurrent]);
+       if ( images[mCurrent] != mLastImageShown ) mNeedRefresh = true;
+       mLastImageShown = images[mCurrent];
       }
     mCurrent++;
     if (mCurrent >= images.size()) mCurrent = 0;
@@ -185,6 +194,7 @@ namespace creaImageIO
     if (im==0) return;
 
     mViewer->SetInput(im);
+       
     mViewer->SetSlice( 0 );
     
     int x1,x2,y1,y2,z1,z2;
@@ -277,7 +287,18 @@ namespace creaImageIO
   }
 
    //================================================================
-  
+  bool WxViewer::RefreshIfNecessary()
+  {
+    if (mNeedRefresh)
+      {
+       GimmickMessage(1,"WxViewer : Refreshing"<<std::endl);
+
+       mInteractor->Render();
+       mNeedRefresh = false;
+       return true;
+      }
+    return false;
+  }
   //==================================================
   void WxViewer::StopPlayer()
   {
@@ -308,11 +329,14 @@ namespace creaImageIO
       { 
                if(!TestDestroy())
            { 
+                       
                        mWxViewer->ShowNextImage();
-                       mWxViewer->Refresh();
+                       //                      mWxViewer->Refresh();
+                       ::wxWakeUpIdle();
                        clock_t endwait;
                        endwait = clock () + 0.2 * CLOCKS_PER_SEC ;
                        while (clock() < endwait) {}
+                       
                }
                else
                {