#include <creaImageIOWxViewer.h>
Public Member Functions | |
WxViewer () | |
Ctors. | |
WxViewer (wxWindow *parent, const wxWindowID id, wxString title, const wxPoint &pos, const wxSize &size) | |
virtual | ~WxViewer () |
Dtor. | |
void | ShowNextImage () |
Shows the next image in the image vector. | |
void | StartPlayer () |
Starts the image player. | |
void | StopPlayer () |
Stops the image player. | |
bool | RefreshIfNecessary () |
Refreshes the interface if the current image shown has changed. | |
void | SetImageVector (std::vector< boost::shared_ptr< ImagePointerHolder > > &pointers) |
Sets a new image vector to be read. | |
void | SetValue () |
Set value of slider control. | |
Private Member Functions | |
void | OnCineLoop (wxCommandEvent &Event) |
Event to resume or start cine loop. | |
void | OnSlide (wxCommandEvent &Event) |
Event to change displayed frames with slide control. | |
void | ShowImage (vtkImageData *im) |
Shows the image passed as parameter. | |
Private Attributes | |
vtkImageViewer2 * | mViewer |
Previewer. | |
wxSlider * | mslide |
Slider. | |
wxCheckBox * | mcheck |
CheckBox to cine loop. | |
crea::creawxVTKRenderWindowInteractor * | mInteractor |
Associated wxvtk interactor. | |
int | mx1 |
Current extent. | |
int | mx2 |
int | my1 |
int | my2 |
int | mz1 |
int | mz2 |
double | mspx |
Current spacing. | |
double | mspy |
double | mspz |
int | mCurrent |
Current image shown. | |
WxViewerPlayer * | mPlayer |
The threaded movie player. | |
wxMutex | mMutex |
The mutex. | |
bool | mNeedRefresh |
Boolean that declares if the player needs to be refreshed. | |
vtkImageData * | mLastImageShown |
Last image shown. | |
std::vector< boost::shared_ptr < ImagePointerHolder > > | imagePointers |
The vectors of images to be shown. | |
wxFlexGridSizer * | mflexSizer |
Sizers to preview images. | |
wxBoxSizer * | mtopSizer |
Definition at line 25 of file creaImageIOWxViewer.h.
creaImageIO::WxViewer::WxViewer | ( | ) |
Ctors.
creaImageIO::WxViewer::WxViewer | ( | wxWindow * | parent, | |
const wxWindowID | id, | |||
wxString | title, | |||
const wxPoint & | pos, | |||
const wxSize & | size | |||
) |
Definition at line 45 of file creaImageIOWxViewer.cpp.
References GimmickDebugMessage, mcheck, mCurrent, mflexSizer, mInteractor, mLastImageShown, mMutex, mNeedRefresh, mPlayer, mslide, mtopSizer, mViewer, OnCineLoop(), and OnSlide().
: wxPanel( parent, id, pos, size) { wxMutexLocker lock(mMutex); GimmickDebugMessage(6,"WxViewer::WxViewer" <<std::endl); mNeedRefresh = false; mLastImageShown = NULL; // previewer mInteractor = new crea::creawxVTKRenderWindowInteractor(this,-1); mInteractor->UseCaptureMouseOn(); mViewer = vtkImageViewer2::New(); mViewer->SetupInteractor ( mInteractor ); mCurrent = 0; 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(); }
creaImageIO::WxViewer::~WxViewer | ( | ) | [virtual] |
Dtor.
Destructor.
Definition at line 97 of file creaImageIOWxViewer.cpp.
References GimmickDebugMessage, mInteractor, mMutex, and mPlayer.
{ wxMutexLocker lock(mMutex); GimmickDebugMessage(6,"WxViewer::~WxViewer" <<std::endl); // TO DO : desallocate cleanly if(mPlayer) { mPlayer->Pause(); mPlayer->Delete(); mPlayer = 0; } delete mInteractor; //delete mslide; //delete mflexSizer; }
void creaImageIO::WxViewer::OnCineLoop | ( | wxCommandEvent & | Event | ) | [private] |
Event to resume or start cine loop.
Definition at line 292 of file creaImageIOWxViewer.cpp.
References mcheck, mPlayer, and StartPlayer().
Referenced by WxViewer().
{ if(!mcheck->IsChecked()) { mPlayer->Pause(); mPlayer->Delete(); mPlayer = 0; } StartPlayer(); }
void creaImageIO::WxViewer::OnSlide | ( | wxCommandEvent & | Event | ) | [private] |
Event to change displayed frames with slide control.
Definition at line 307 of file creaImageIOWxViewer.cpp.
References mCurrent, mslide, and StartPlayer().
Referenced by WxViewer().
{ mCurrent = mslide->GetValue() -1; StartPlayer(); }
bool creaImageIO::WxViewer::RefreshIfNecessary | ( | ) |
Refreshes the interface if the current image shown has changed.
Definition at line 246 of file creaImageIOWxViewer.cpp.
References GimmickDebugMessage, mInteractor, and mNeedRefresh.
Referenced by creaImageIO::WxGimmickView::ClearSelection(), and creaImageIO::WxGimmickView::OnRemove().
{ if (mNeedRefresh) { GimmickDebugMessage(10,"WxViewer : Refreshing"<<std::endl); mInteractor->Render(); mNeedRefresh = false; return true; } return false; }
void creaImageIO::WxViewer::SetImageVector | ( | std::vector< boost::shared_ptr< ImagePointerHolder > > & | pointers | ) |
Sets a new image vector to be read.
Definition at line 116 of file creaImageIOWxViewer.cpp.
References GimmickDebugMessage, imagePointers, mMutex, mslide, and StartPlayer().
Referenced by creaImageIO::WxGimmickView::OnRemove(), and creaImageIO::WxGimmickView::WxGimmickView().
{ wxMutexLocker lock(mMutex); GimmickDebugMessage(6,"WxViewer::SetImageVector"<<std::endl); imagePointers=pointers; mslide->SetMax(pointers.size()); mslide->SetMin(1); // Refresh don't work, TO MODIFY mslide->Refresh(); mslide->ClearTicks(); mslide->Hide(); mslide->Show(); StartPlayer(); }
void creaImageIO::WxViewer::SetValue | ( | ) |
Set value of slider control.
Definition at line 316 of file creaImageIOWxViewer.cpp.
References mCurrent, and mslide.
Referenced by creaImageIO::WxViewerPlayer::Entry().
void creaImageIO::WxViewer::ShowImage | ( | vtkImageData * | im | ) | [private] |
Shows the image passed as parameter.
Definition at line 179 of file creaImageIOWxViewer.cpp.
References GimmickDebugMessage, mspx, mspy, mspz, mViewer, mx1, mx2, my1, my2, mz1, and mz2.
Referenced by ShowNextImage().
{ 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); // 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) || (y2!=my2) || (z1!=mz1) || (z2!=mz2) || (spx!=mspx) || (spy!=mspy) || (spz!=mspz) ) { mx1 = x1; mx2 = x2; my1 = y1; my2 = y2; mz1 = z1; mz2 = z2; 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->GetRenderer()->ResetCamera(); double bounds[6]; mViewer->GetRenderer()->ComputeVisiblePropBounds(bounds); mViewer->GetRenderer()->ResetCameraClippingRange(bounds); mViewer->GetRenderer()->SetBackground(0.1,0.1,0.2); } }
void creaImageIO::WxViewer::ShowNextImage | ( | ) |
Shows the next image in the image vector.
Definition at line 134 of file creaImageIOWxViewer.cpp.
References GimmickMessage, imagePointers, mCurrent, mLastImageShown, mMutex, mNeedRefresh, and ShowImage().
Referenced by creaImageIO::WxViewerPlayer::Entry(), and StartPlayer().
{ mMutex.Unlock(); wxMutexLocker lock(mMutex); GimmickMessage(2,"WxViewer::ShowNextImage() " <<mCurrent+1<<"/" <<imagePointers.size()<<std::endl); if(imagePointers.size()>0) { if (mCurrent<imagePointers.size()) { boost::shared_ptr<ImagePointerHolder> 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<ImagePointerHolder> iph = imagePointers[mCurrent]; vtkImageData* currIm=iph->Get(); ShowImage(currIm); if ( currIm != mLastImageShown ) { mNeedRefresh = true; mLastImageShown = currIm; } mCurrent++; } } }
void creaImageIO::WxViewer::StartPlayer | ( | ) |
Starts the image player.
Definition at line 272 of file creaImageIOWxViewer.cpp.
References mcheck, mPlayer, and ShowNextImage().
Referenced by OnCineLoop(), OnSlide(), SetImageVector(), and creaImageIO::WxGimmickView::WxGimmickView().
{ if(mcheck->IsChecked()) { // wxMutexLocker lock(mMutex); if (mPlayer != 0) return; mPlayer = new WxViewerPlayer(this); mPlayer->Create(); mPlayer->Run(); } else { ShowNextImage(); } }
void creaImageIO::WxViewer::StopPlayer | ( | ) |
Stops the image player.
Definition at line 261 of file creaImageIOWxViewer.cpp.
References mMutex, and mPlayer.
Referenced by creaImageIO::WxGimmickView::CreateToolBar(), and creaImageIO::WxGimmickView::StopPlayer().
{ wxMutexLocker lock(mMutex); if (mPlayer==0 ) return; mPlayer->Delete(); mPlayer=0; mMutex.Unlock(); }
std::vector< boost::shared_ptr<ImagePointerHolder> > creaImageIO::WxViewer::imagePointers [private] |
The vectors of images to be shown.
Definition at line 90 of file creaImageIOWxViewer.h.
Referenced by SetImageVector(), and ShowNextImage().
wxCheckBox* creaImageIO::WxViewer::mcheck [private] |
CheckBox to cine loop.
Definition at line 70 of file creaImageIOWxViewer.h.
Referenced by OnCineLoop(), StartPlayer(), and WxViewer().
int creaImageIO::WxViewer::mCurrent [private] |
Current image shown.
Definition at line 80 of file creaImageIOWxViewer.h.
Referenced by OnSlide(), SetValue(), ShowNextImage(), and WxViewer().
wxFlexGridSizer* creaImageIO::WxViewer::mflexSizer [private] |
Sizers to preview images.
Definition at line 93 of file creaImageIOWxViewer.h.
Referenced by WxViewer().
crea::creawxVTKRenderWindowInteractor* creaImageIO::WxViewer::mInteractor [private] |
Associated wxvtk interactor.
Definition at line 73 of file creaImageIOWxViewer.h.
Referenced by RefreshIfNecessary(), WxViewer(), and ~WxViewer().
vtkImageData* creaImageIO::WxViewer::mLastImageShown [private] |
Last image shown.
Definition at line 88 of file creaImageIOWxViewer.h.
Referenced by ShowNextImage(), and WxViewer().
wxMutex creaImageIO::WxViewer::mMutex [private] |
The mutex.
Definition at line 84 of file creaImageIOWxViewer.h.
Referenced by SetImageVector(), ShowNextImage(), StopPlayer(), WxViewer(), and ~WxViewer().
bool creaImageIO::WxViewer::mNeedRefresh [private] |
Boolean that declares if the player needs to be refreshed.
Definition at line 86 of file creaImageIOWxViewer.h.
Referenced by RefreshIfNecessary(), ShowNextImage(), and WxViewer().
WxViewerPlayer* creaImageIO::WxViewer::mPlayer [private] |
The threaded movie player.
Definition at line 82 of file creaImageIOWxViewer.h.
Referenced by OnCineLoop(), StartPlayer(), StopPlayer(), WxViewer(), and ~WxViewer().
wxSlider* creaImageIO::WxViewer::mslide [private] |
Slider.
Definition at line 67 of file creaImageIOWxViewer.h.
Referenced by OnSlide(), SetImageVector(), SetValue(), and WxViewer().
double creaImageIO::WxViewer::mspx [private] |
double creaImageIO::WxViewer::mspy [private] |
Definition at line 78 of file creaImageIOWxViewer.h.
Referenced by ShowImage().
double creaImageIO::WxViewer::mspz [private] |
Definition at line 78 of file creaImageIOWxViewer.h.
Referenced by ShowImage().
wxBoxSizer* creaImageIO::WxViewer::mtopSizer [private] |
Definition at line 94 of file creaImageIOWxViewer.h.
Referenced by WxViewer().
vtkImageViewer2* creaImageIO::WxViewer::mViewer [private] |
Previewer.
Definition at line 64 of file creaImageIOWxViewer.h.
Referenced by ShowImage(), and WxViewer().
int creaImageIO::WxViewer::mx1 [private] |
int creaImageIO::WxViewer::mx2 [private] |
Definition at line 76 of file creaImageIOWxViewer.h.
Referenced by ShowImage().
int creaImageIO::WxViewer::my1 [private] |
Definition at line 76 of file creaImageIOWxViewer.h.
Referenced by ShowImage().
int creaImageIO::WxViewer::my2 [private] |
Definition at line 76 of file creaImageIOWxViewer.h.
Referenced by ShowImage().
int creaImageIO::WxViewer::mz1 [private] |
Definition at line 76 of file creaImageIOWxViewer.h.
Referenced by ShowImage().
int creaImageIO::WxViewer::mz2 [private] |
Definition at line 76 of file creaImageIOWxViewer.h.
Referenced by ShowImage().