Public Member Functions | Private Member Functions | Private Attributes

creaImageIO::WxViewer Class Reference

#include <creaImageIOWxViewer.h>

Collaboration diagram for creaImageIO::WxViewer:
Collaboration graph
[legend]

List of all members.

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.
WxViewerPlayermPlayer
 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

Detailed Description

Definition at line 25 of file creaImageIOWxViewer.h.


Constructor & Destructor Documentation

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(); 
  }

Here is the call graph for this function:

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;
  }


Member Function Documentation

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();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

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();
         }

Here is the call graph for this function:

Here is the caller graph for this function:

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;
  }

Here is the caller graph for this function:

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();
  }

Here is the call graph for this function:

Here is the caller graph for this function:

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

         {
                 mslide->SetValue(mCurrent);
         }

Here is the caller graph for this function:

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);  
      }
  } 

Here is the caller graph for this function:

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++;
                }
        }
  }

Here is the call graph for this function:

Here is the caller graph for this function:

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();
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

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();
  }

Here is the caller graph for this function:


Member Data Documentation

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

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

Boolean that declares if the player needs to be refreshed.

Definition at line 86 of file creaImageIOWxViewer.h.

Referenced by RefreshIfNecessary(), ShowNextImage(), and WxViewer().

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]

Current spacing.

Definition at line 78 of file creaImageIOWxViewer.h.

Referenced by ShowImage().

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

Current extent.

Definition at line 76 of file creaImageIOWxViewer.h.

Referenced by ShowImage().

Definition at line 76 of file creaImageIOWxViewer.h.

Referenced by ShowImage().

Definition at line 76 of file creaImageIOWxViewer.h.

Referenced by ShowImage().

Definition at line 76 of file creaImageIOWxViewer.h.

Referenced by ShowImage().

Definition at line 76 of file creaImageIOWxViewer.h.

Referenced by ShowImage().

Definition at line 76 of file creaImageIOWxViewer.h.

Referenced by ShowImage().


The documentation for this class was generated from the following files: