]> Creatis software - creaImageIO.git/blob - src2/creaImageIOWxViewer.h
Changed reading and viewing method by adding ImagePointerHolders
[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     //    friend class ThreadedMovie;
30     /// Ctor 
31     WxViewer();
32     WxViewer(wxWindow *parent, 
33                    const wxWindowID id,
34                    wxString title,
35                    const wxPoint& pos, 
36                    const wxSize& size);
37     /// Dtor
38     virtual ~WxViewer();
39     ///Shows the image in the vector as a movie
40     //void ShowImages();
41     /// Sets the movie size
42     void SetMovieSize(unsigned int);
43     ///Sets the ith image of the movie
44     void SetImage(int i, vtkImageData* im);
45     ///Clears the selection of images
46     //  void ClearImages();
47     ///Returns true if the image vector is empty
48     bool ImagesEmpty();
49     /// 
50     void ShowNextImage();
51     
52     void OnInternalIdle();
53
54         void StartPlayer();
55
56     void StopPlayer();
57
58     bool RefreshIfNecessary();
59
60         void SetImageVector(std::vector<ImagePointerHolder*>& pointers);
61   
62
63   private:
64    ///Shows the image passed as parameter
65     void ShowImage(vtkImageData* im);
66
67     /// Previewer
68     vtkImageViewer2* mViewer;
69     /// Associated wxvtk interactor
70     crea::creawxVTKRenderWindowInteractor  *mInteractor;
71     
72     /// Current extent 
73     int mx1,mx2,my1,my2,mz1,mz2;
74     /// Current spacing
75     double mspx,mspy,mspz;
76
77     /// The vector of images to show
78     std::vector<vtkImageData*> images;
79     /// 
80     int mCurrent;
81     ///The threaded movie player
82     WxViewerPlayer* mPlayer;
83
84     /// The mutex
85     wxMutex mMutex;
86
87     /// 
88     bool mNeedRefresh;
89
90         
91     vtkImageData* mLastImageShown;
92         std::vector<ImagePointerHolder*> imagePointers;
93
94   };
95
96 }
97
98 #endif // USE_WIDGETS
99 // EOF
100 #endif