X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxViewer.cpp;h=aaa6cf25c890daff64cb58d4e056950c52ceb47b;hb=14cf4a18b7517a3f7e86ee3e756043a3431b87db;hp=d6871d9657d822b321eb784487079b0420b0235c;hpb=82026cc5a9a36392c481513cd86091714eca51d1;p=creaImageIO.git diff --git a/src2/creaImageIOWxViewer.cpp b/src2/creaImageIOWxViewer.cpp index d6871d9..aaa6cf2 100644 --- a/src2/creaImageIOWxViewer.cpp +++ b/src2/creaImageIOWxViewer.cpp @@ -5,11 +5,12 @@ #include #include #include - +#include #include #include #include + using namespace crea; namespace creaImageIO @@ -26,21 +27,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; }; //===================================================================== @@ -62,17 +53,13 @@ namespace creaImageIO size) { wxMutexLocker lock(mMutex); - GimmickDebugMessage(1,"WxViewer::WxViewer" + GimmickDebugMessage(6,"WxViewer::WxViewer" <UseCaptureMouseOn(); @@ -80,11 +67,27 @@ namespace creaImageIO mViewer->SetupInteractor ( mInteractor ); mCurrent = 0; - - mPlayer = 0; - - topsizer-> Add( mInteractor ,1,wxGROW ,0); - SetSizer( topsizer ); + mPlayer = 0; + + // Grid to place checkbox and slider + mflexSizer = new wxFlexGridSizer(1,2,1,1); + //Slider + mslide = new wxSlider(this,-1,0,0,1, wxDefaultPosition, wxSize(400,40), wxSL_HORIZONTAL | wxSL_LABELS); + Connect( mslide->GetId(), wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WxViewer::OnSlide ); + //CheckBox + mcheck = new wxCheckBox(this,5123,crea::std2wx("Cine Loop")); + Connect( mcheck->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &WxViewer::OnCineLoop ); + mcheck->SetValue(false); + mflexSizer->Add(mcheck,0, wxFIXED_MINSIZE); + mflexSizer-> Add( mslide,1,wxALIGN_CENTER | wxFIXED_MINSIZE ); + + // Sizer for Previewer and GridSizer + mtopSizer = new wxBoxSizer(wxVERTICAL); + mtopSizer->Add(mflexSizer,0); + mtopSizer-> Add( mInteractor ,1,wxGROW,0); + SetSizer(mtopSizer,true); + + Update(); Layout(); } //===================================================================== @@ -94,74 +97,37 @@ namespace creaImageIO WxViewer::~WxViewer() { wxMutexLocker lock(mMutex); - GimmickDebugMessage(1,"WxViewer::~WxViewer" + GimmickDebugMessage(6,"WxViewer::~WxViewer" <0) + if(mPlayer) { - GimmickDebugMessage(5,"WxViewer::SetImage "<UnRegister(NULL); - images[i] = im; - // if (im!=0) im->Register(NULL); - } - + mPlayer->Pause(); + mPlayer->Delete(); + mPlayer = 0; } - + delete mInteractor; + //delete mslide; + //delete mflexSizer; } + //===================================================================== //================================================================ - void WxViewer::SetImageVector(std::vector& pointers) + void WxViewer::SetImageVector(std::vector >& pointers) { wxMutexLocker lock(mMutex); - GimmickMessage(1,"WxViewer::SetImageVector"<SetMax(pointers.size()); + // Refresh don't work, TO MODIFY + mslide->Refresh(); + mslide->ClearTicks(); + mslide->Hide(); + mslide->Show(); + StartPlayer(); } - - //================================================================ - - bool WxViewer::ImagesEmpty() - { - wxMutexLocker lock(mMutex); - return images.empty(); - } - //================================================================ - - //================================================================ - - void WxViewer::SetMovieSize(unsigned int si) - { - wxMutexLocker lock(mMutex); - GimmickDebugMessage(5,"WxViewer::SetMovieSize("<<(int)si<<")" - <UnRegister(NULL); - } - } - images.clear(); - for (unsigned int i=0;i0) { if (mCurrent iph = imagePointers[mCurrent]; + //ImagePointerHolder* iph= imagePointers[mCurrent]; vtkImageData* currIm=iph->Get(); ShowImage(currIm); if ( currIm != mLastImageShown ) @@ -190,7 +157,8 @@ namespace creaImageIO else { mCurrent = 0; - ImagePointerHolder* iph=imagePointers[mCurrent]; + //ImagePointerHolder* iph=imagePointers[mCurrent]; + boost::shared_ptr iph = imagePointers[mCurrent]; vtkImageData* currIm=iph->Get(); ShowImage(currIm); if ( currIm != mLastImageShown ) @@ -204,28 +172,37 @@ namespace creaImageIO } //================================================================ - - - //===================================================================== 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; 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) || @@ -246,45 +223,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); } - - //::wxWakeUpIdle(); - } //================================================================ - //================================================== - void WxViewer::OnInternalIdle() - { - // mInteractor->Refresh(); - if(images.size()>0) - { -// mInteractor->Render(); - } - //mViewer->Render(); - } - - //================================================================ + //================================================================ bool WxViewer::RefreshIfNecessary() { if (mNeedRefresh) { - GimmickMessage(1,"WxViewer : Refreshing"<Render(); mNeedRefresh = false; @@ -292,28 +252,67 @@ 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() { - // wxMutexLocker lock(mMutex); - if (mPlayer != 0) return; - mPlayer = new WxViewerPlayer(this); - mPlayer->Create(); - mPlayer->Run(); + if(mcheck->IsChecked()) + { + // wxMutexLocker lock(mMutex); + if (mPlayer != 0) return; + mPlayer = new WxViewerPlayer(this); + mPlayer->Create(); + mPlayer->Run(); + } + else + { + ShowNextImage(); + } + } + + //================================================================ + + //================================================== + + void WxViewer::OnCineLoop(wxCommandEvent &Event) + { + if(!mcheck->IsChecked()) + { + mPlayer->Pause(); + mPlayer->Delete(); + mPlayer = 0; + } + StartPlayer(); } + //================================================================ + + //================================================== - - + void WxViewer::OnSlide(wxCommandEvent &Event) + { + mCurrent = mslide->GetValue(); + StartPlayer(); + } + //================================================================ + + //================================================== + + void WxViewer::SetValue() + { + mslide->SetValue(mCurrent); + } // BEGIN_EVENT_TABLE(WxGimmickFrame, wxDialog) // END_EVENT_TABLE() @@ -331,16 +330,17 @@ namespace creaImageIO void* WxViewerPlayer::Entry() { - GimmickMessage(1,"WxViewerPlayer::Entry()"<ShowNextImage(); + mWxViewer->SetValue(); ::wxWakeUpIdle(); clock_t endwait; endwait = clock () + 0.2 * CLOCKS_PER_SEC ; - while (clock() < endwait) {} + while (clock() < endwait ) {} } return 0; @@ -351,7 +351,7 @@ namespace creaImageIO //===================================================================== void WxViewerPlayer::OnExit() { - GimmickMessage(1,"WxViewerPlayer::OnExit() "<