#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().
1.7.1