X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxViewer.cpp;h=f73e81ebc5093375f2b9fbebe996d16cebbbbe2d;hb=a67d921cdc10d438852b48c2985f14d91320e016;hp=e9f0bdd73d1dfb24fc758c2a988cec87d304ba7a;hpb=00e4672c3c43da02dbbab0f23bf076c2c36532ea;p=creaImageIO.git diff --git a/src2/creaImageIOWxViewer.cpp b/src2/creaImageIOWxViewer.cpp index e9f0bdd..f73e81e 100644 --- a/src2/creaImageIOWxViewer.cpp +++ b/src2/creaImageIOWxViewer.cpp @@ -5,17 +5,16 @@ #include #include #include - +#include #include #include #include - using namespace crea; - +// Memory tracking allocation namespace creaImageIO { - + //===================================================================== //===================================================================== @@ -27,21 +26,11 @@ namespace creaImageIO {} void* Entry(); - // void SetImagesToPlay(std::vector im); - // void ShowImage(vtkImageData* v); - // void StartIterator(); void OnExit(); - + private: - //std::vector mImagesToPlay; - //vtkImageViewer2* mViewer; - /// Associated wxvtk interactor - //crea::creawxVTKRenderWindowInteractor *mInteractor; - //std::vector::iterator i; + WxViewer* mWxViewer; - - // int mx1,mx2,my1,my2,mz1,mz2; - // double mspx,mspy,mspz; }; //===================================================================== @@ -63,9 +52,12 @@ namespace creaImageIO size) { wxMutexLocker lock(mMutex); - GimmickDebugMessage(1,"WxViewer::WxViewer" + GimmickDebugMessage(6,"WxViewer::WxViewer" <SetupInteractor ( mInteractor ); mCurrent = 0; - - mPlayer = new WxViewerPlayer(this); //images, mViewer, mInteractor, this); - mPlayer->Create(); - mPlayer->Run(); - + mPlayer = 0; + topsizer-> Add( mInteractor ,1,wxGROW ,0); SetSizer( topsizer ); Layout(); @@ -94,97 +83,76 @@ namespace creaImageIO WxViewer::~WxViewer() { wxMutexLocker lock(mMutex); - GimmickDebugMessage(1,"WxViewer::~WxViewer" + GimmickDebugMessage(6,"WxViewer::~WxViewer" <0) - { - GimmickDebugMessage(5,"WxViewer::SetImage "<UnRegister(NULL); - images[i] = im; - // if (im!=0) im->Register(NULL); - } - - } - - } - - //================================================================ - - - - //================================================================ - - bool WxViewer::ImagesEmpty() - { - wxMutexLocker lock(mMutex); - return images.empty(); - } - //================================================================ - //================================================================ - - void WxViewer::SetMovieSize(unsigned int si) + void WxViewer::SetImageVector(std::vector >& pointers) { - wxMutexLocker lock(mMutex); - GimmickDebugMessage(5,"WxViewer::SetMovieSize("<<(int)si<<")" - <UnRegister(NULL); - } - } - images.clear(); - for (unsigned int i=0;i= images.size()) mCurrent = 0; + <0) + { + if (mCurrent iph = imagePointers[mCurrent]; + //ImagePointerHolder* iph= imagePointers[mCurrent]; + vtkImageData* currIm=iph->Get(); + ShowImage(currIm); + if ( currIm != mLastImageShown ) + { + mNeedRefresh = true; + mLastImageShown = currIm; + } + mCurrent++; + } + else + { + mCurrent = 0; + //ImagePointerHolder* iph=imagePointers[mCurrent]; + boost::shared_ptr iph = imagePointers[mCurrent]; + vtkImageData* currIm=iph->Get(); + ShowImage(currIm); + if ( currIm != mLastImageShown ) + { + mNeedRefresh = true; + mLastImageShown = currIm; + } + mCurrent++; + } + } } //================================================================ - - - //===================================================================== void WxViewer::ShowImage(vtkImageData* im) { - GimmickDebugMessage(5,"WxViewer::ShowImage" + + GimmickDebugMessage(6,"WxViewer::ShowImage" <SetInput(im); + mViewer->SetSlice( 0 ); int x1,x2,y1,y2,z1,z2; @@ -193,13 +161,6 @@ namespace creaImageIO im->GetSpacing(spx,spy,spz); im->GetExtent (x1,x2,y1,y2,z1,z2); - /* - std::cout << "-----------------------------"<GetRenderer()->ComputeVisiblePropBounds(bounds); - /* - std::cout <<"bounds : "<GetRenderer()->ResetCameraClippingRange(bounds); - /* - vtkCamera *camera = mViewer->GetRenderer()->GetActiveCamera(); - - camera->SetViewUp ( spx*0, -spy*1, spz*0); - camera->SetPosition( spx*(x1+x2)/2, spy*(y1+y2)/2, spz*10000000); - camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0); - - camera->ComputeViewPlaneNormal(); - camera->SetParallelScale( spx*(x2-x1)/2.0 ); - - camera->Roll ( 180 ); - */ + - } - - // mInteractor->Refresh(); - //mInteractor->Render(); - // mViewer->Render(); + } - ::wxWakeUpIdle(); } + //================================================================ + + //================================================================ + bool WxViewer::RefreshIfNecessary() + { + if (mNeedRefresh) + { + GimmickDebugMessage(10,"WxViewer : Refreshing"<Render(); + mNeedRefresh = false; + return true; + } + return false; + } //================================================================ //================================================== - void WxViewer::OnInternalIdle() + void WxViewer::StopPlayer() { - // mInteractor->Refresh(); - if(images.size()>0) - { - mInteractor->Render(); - } - //mViewer->Render(); + wxMutexLocker lock(mMutex); + if (mPlayer==0 ) return; + mPlayer->Delete(); + mPlayer=0; } + //================================================================ - //================================================= - + //================================================== + void WxViewer::StartPlayer() + { + // wxMutexLocker lock(mMutex); + if (mPlayer != 0) return; + mPlayer = new WxViewerPlayer(this); + mPlayer->Create(); + mPlayer->Run(); + } + // BEGIN_EVENT_TABLE(WxGimmickFrame, wxDialog) // END_EVENT_TABLE() @@ -295,30 +254,17 @@ namespace creaImageIO void* WxViewerPlayer::Entry() { - GimmickMessage(1,"WxViewerPlayer::Entry()"<ShowNextImage(); + ::wxWakeUpIdle(); + clock_t endwait; + endwait = clock () + 0.2 * CLOCKS_PER_SEC ; + while (clock() < endwait ) {} - while(true) - { - mWxViewer->ShowNextImage(); - clock_t endwait; - endwait = clock () + 0.2 * CLOCKS_PER_SEC ; - while (clock() < endwait) {} - /* - for(i=mImagesToPlay.begin();i!=mImagesToPlay.end();++i) - { - if(i!=mImagesToPlay.end()) - { - - GimmickMessage(1,"ThreadedMovie next image"<Refresh(); - endwait = clock () + 0.2 * CLOCKS_PER_SEC ; - while (clock() < endwait) {} - } - - } - */ } return 0; } @@ -328,11 +274,9 @@ namespace creaImageIO //===================================================================== void WxViewerPlayer::OnExit() { - GimmickMessage(1,"WxViewerPlayer::OnExit() "<