]> Creatis software - creaImageIO.git/blob - src2/creaImageIOWxViewer.h
Validate is now linear
[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         void SetImageVector(std::vector<ImagePointerHolder*>& pointers);
48   
49
50   private:
51     ///Shows the image passed as parameter
52     void ShowImage(vtkImageData* im);
53     /// Previewer
54     vtkImageViewer2* mViewer;
55     /// Associated wxvtk interactor
56     crea::creawxVTKRenderWindowInteractor  *mInteractor;
57     /// Current extent 
58     int mx1,mx2,my1,my2,mz1,mz2;
59     /// Current spacing
60     double mspx,mspy,mspz;
61     /// Current image shown
62     int mCurrent;
63     ///The threaded movie player
64     WxViewerPlayer* mPlayer;
65     /// The mutex
66     wxMutex mMutex;
67     /// Boolean that declares if the player needs to be refreshed
68     bool mNeedRefresh;
69         ///Last image shown
70     vtkImageData* mLastImageShown;
71         ///The vectors of images to be shown
72         std::vector<ImagePointerHolder*> imagePointers;
73
74   };
75
76 }
77
78 #endif // USE_WIDGETS
79 // EOF
80 #endif