]> Creatis software - creaImageIO.git/blob - src/creaImageIOWxViewer.h
1e4e2f20bddf0f630361687dfe0e2e62f61e00b1
[creaImageIO.git] / src / 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         void SetImageVector(std::vector<boost::shared_ptr<ImagePointerHolder> > &pointers);
48
49         /// Set value of slider control
50         void SetValue();
51
52   private:
53
54     /// Event to resume or start cine loop
55         void OnCineLoop(wxCommandEvent &Event);
56
57         /// Event to change displayed frames with slide control
58         void OnSlide(wxCommandEvent &Event);
59
60
61     ///Shows the image passed as parameter
62     void ShowImage(vtkImageData* im);
63     /// Previewer
64     vtkImageViewer2* mViewer;
65
66         ///Slider
67         wxSlider *mslide ;
68
69         ///CheckBox to cine loop
70         wxCheckBox  *mcheck;
71
72     /// Associated wxvtk interactor
73         crea::creawxVTKRenderWindowInteractor  *mInteractor;
74         
75     /// Current extent 
76     int mx1,mx2,my1,my2,mz1,mz2;
77     /// Current spacing
78     double mspx,mspy,mspz;
79     /// Current image shown
80     int mCurrent;
81     ///The threaded movie player
82     WxViewerPlayer* mPlayer;
83     /// The mutex
84     wxMutex mMutex;
85     /// Boolean that declares if the player needs to be refreshed
86     bool mNeedRefresh;
87         ///Last image shown
88     vtkImageData* mLastImageShown;
89         ///The vectors of images to be shown
90         std::vector< boost::shared_ptr<ImagePointerHolder> > imagePointers;
91
92         /// Sizers to preview images 
93         wxFlexGridSizer *mflexSizer;
94         wxBoxSizer *mtopSizer;
95
96   };
97
98 }
99
100 #endif // USE_WIDGETS
101 // EOF
102 #endif