]> Creatis software - creaImageIO.git/blob - src2/creaImageIOWxViewer.h
memory leak tracking
[creaImageIO.git] / src2 / creaImageIOWxViewer.h
1 #ifndef __creaImageIOWxViewer_h_INCLUDED__
2 #define __creaImageIOWxViewer_h_INCLUDED__
3
4 #ifdef USE_WXWIDGETS
5
6 // wx
7 #include <creaWx.h>
8 #include <wx/image.h>
9 #include <wx/imaglist.h>
10 #include <wx/splitter.h>
11
12 #include <creaImageIOSystem.h>
13 #include <creaImageIOImagePointerHolder.h>
14
15 // For image preview 
16 // vtk and wxvtk classes
17 #include "creawxVTKRenderWindowInteractor.h"
18 #include "vtkImageViewer2.h"
19
20 namespace creaImageIO
21 {
22
23   class WxViewerPlayer;
24
25   class WxViewer : public wxPanel
26   {
27  
28   public:
29     /// Ctors 
30     WxViewer();
31     WxViewer(wxWindow *parent, 
32                    const wxWindowID id,
33                    wxString title,
34                    const wxPoint& pos, 
35                    const wxSize& size);
36     /// Dtor
37     virtual ~WxViewer();
38     /// Shows the next image in the image vector
39     void ShowNextImage();
40         ///Starts the image player
41         void StartPlayer();
42         ///Stops the image player
43     void StopPlayer();
44         ///Refreshes the interface if the current image shown has changed
45     bool RefreshIfNecessary();
46         ///Sets a new image vector to be read
47
48         void SetImageVector(std::vector<boost::shared_ptr<ImagePointerHolder> > &pointers);
49   
50
51   private:
52     ///Shows the image passed as parameter
53     void ShowImage(vtkImageData* im);
54     /// Previewer
55     vtkImageViewer2* mViewer;
56     /// Associated wxvtk interactor
57     crea::creawxVTKRenderWindowInteractor  *mInteractor;
58         
59     /// Current extent 
60     int mx1,mx2,my1,my2,mz1,mz2;
61     /// Current spacing
62     double mspx,mspy,mspz;
63     /// Current image shown
64     int mCurrent;
65     ///The threaded movie player
66     WxViewerPlayer* mPlayer;
67     /// The mutex
68     wxMutex mMutex;
69     /// Boolean that declares if the player needs to be refreshed
70     bool mNeedRefresh;
71         ///Last image shown
72     vtkImageData* mLastImageShown;
73         ///The vectors of images to be shown
74         std::vector< boost::shared_ptr<ImagePointerHolder> > imagePointers;
75
76   };
77
78 }
79
80 #endif // USE_WIDGETS
81 // EOF
82 #endif