]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuViewerNV.h
Bug #1679
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuViewerNV.h
1 #ifdef _USE_WXWIDGETS_
2 #ifndef __bbcreaMaracasVisuViewerNV_h_INCLUDED__
3 #define __bbcreaMaracasVisuViewerNV_h_INCLUDED__
4 #include "bbtkWxBlackBox.h"
5
6 #include "vtkImageData.h"
7 #include "vtkRenderer.h"
8
9 #include "wxVtkBaseView.h"
10
11 //#include "widgets/wxMPRWidget.h"
12 //#include "widgets/wxMaracas_ViewerWidget.h"
13 //#include "widgets/wxMaracas_N_ViewersWidget.h"
14
15 #include "wxMPRWidget.h"
16 #include "wxMaracas_ViewerWidget.h"
17 #include "wxMaracas_N_ViewersWidget.h"
18
19 #include "vtkImagePlaneWidget.h"
20
21 namespace bbcreaMaracasVisu
22 {
23   class ViewerNV;
24   class bbwxMaracas_N_ViewersWidget : public wxMaracas_N_ViewersWidget
25   {
26         public:
27                 bbwxMaracas_N_ViewersWidget(ViewerNV* box,wxWindow *parent, vtkImageData* imagedata=NULL, std::vector<int> *nTypeView=NULL);
28                 ~bbwxMaracas_N_ViewersWidget();
29
30                 //if the MPR had generated the refresh event
31                 void OnRefreshView(wxCommandEvent &event);
32                 void OnDClickLeft(wxCommandEvent &event);
33         private:
34                 ViewerNV                        *mbbViewerNV;
35         DECLARE_EVENT_TABLE( );
36   };
37
38 //-------------------------------------------------------------------
39 //-------------------------------------------------------------------
40 //-------------------------------------------------------------------
41
42 class /*BBTK_EXPORT*/ ViewerNV
43  :
44    public bbtk::WxBlackBox
45 {
46   BBTK_BLACK_BOX_INTERFACE(ViewerNV,bbtk::WxBlackBox);
47   BBTK_DECLARE_INPUT(Title,std::string);
48   BBTK_DECLARE_INPUT(In, vtkImageData *);
49   BBTK_DECLARE_INPUT(nTypeView, std::vector<int> );
50   BBTK_DECLARE_INPUT(ColorFunction, vtkColorTransferFunction* );
51   BBTK_DECLARE_INPUT(WindowLevel, int );
52   BBTK_DECLARE_INPUT(ColorLevel, int );
53   BBTK_DECLARE_INPUT(Obs1, vtkInteractorObserver *);
54   BBTK_DECLARE_INPUT(Obs2, vtkInteractorObserver *);
55   BBTK_DECLARE_INPUT(Obs3, vtkInteractorObserver *);
56   BBTK_DECLARE_INPUT(Obs4, vtkInteractorObserver *);
57   BBTK_DECLARE_INPUT(Obs5, vtkInteractorObserver *);
58
59   BBTK_DECLARE_OUTPUT(wxVtkBaseView1,wxVtkBaseView*);
60   BBTK_DECLARE_OUTPUT(wxVtkBaseView2,wxVtkBaseView*);
61   BBTK_DECLARE_OUTPUT(wxVtkBaseView3,wxVtkBaseView*);
62   BBTK_DECLARE_OUTPUT(wxVtkBaseView4,wxVtkBaseView*);
63   BBTK_DECLARE_OUTPUT(Renderer1,vtkRenderer*);
64   BBTK_DECLARE_OUTPUT(Renderer2,vtkRenderer*);
65   BBTK_DECLARE_OUTPUT(Renderer3,vtkRenderer*);
66   BBTK_DECLARE_OUTPUT(Renderer4,vtkRenderer*);
67   BBTK_DECLARE_OUTPUT(Interactor1,vtkRenderWindowInteractor*);
68   BBTK_DECLARE_OUTPUT(Point,std::vector<int>);
69
70   BBTK_PROCESS(Process);
71   void Process();
72   BBTK_CREATE_WIDGET(CreateWidget);
73   void CreateWidget(wxWindow* parent);
74
75    std::vector<int>                             _point;
76 private:
77
78         vtkImageData                            *_currentimg;
79         std::vector<int>                        _currenttype;
80         wxMaracas_N_ViewersWidget       *_mwxwidget;
81         
82         bool compareVectors(std::vector<int> type,std::vector<int> currenttype);
83         void updateObservers();
84 };
85
86 BBTK_BEGIN_DESCRIBE_BLACK_BOX(ViewerNV,bbtk::WxBlackBox);
87 BBTK_NAME("ViewerNV");
88 BBTK_AUTHOR("eduardo.davila [at] creatis.insa-lyon.fr");
89 BBTK_DESCRIPTION("Viewer : N view configuration 2D and 3D");
90   BBTK_CATEGORY("viewer");
91   BBTK_INPUT(ViewerNV,Title,"Title prepended to the text",std::string,"");
92   BBTK_INPUT(ViewerNV,In,"Input image",vtkImageData*,"");
93   BBTK_INPUT(ViewerNV,nTypeView,"vector of viewer types (default 5 1 2 0): -1=Z_2DwithOutAxis 0=Z_2D 1=X_2D 2=Y_2D 3=Plane 4=Sphere 5=3D 6=3Dplane 7=3D_empty",std::vector<int>,"");
94   BBTK_INPUT(ViewerNV,ColorFunction,"Optional: set a different color for the viewers 2D",vtkColorTransferFunction*,"");
95   BBTK_INPUT(ViewerNV,WindowLevel,"Optional: set a different Window level by using an other widget",int,"");
96   BBTK_INPUT(ViewerNV,ColorLevel,"Optional: set a different Color level by using an other widget",int,"");
97   BBTK_INPUT(ViewerNV,Obs1,"Optional: set a different Color level by using an other widget",vtkInteractorObserver*,"");
98   BBTK_INPUT(ViewerNV,Obs2,"Optional: set a different Color level by using an other widget",vtkInteractorObserver*,"");
99   BBTK_INPUT(ViewerNV,Obs3,"Optional: set a different Color level by using an other widget",vtkInteractorObserver*,"");
100   BBTK_INPUT(ViewerNV,Obs4,"Optional: set a different Color level by using an other widget",vtkInteractorObserver*,"");
101   BBTK_INPUT(ViewerNV,Obs5,"Optional: set a different Color level by using an other widget",vtkInteractorObserver*,"");
102
103   BBTK_OUTPUT(ViewerNV,wxVtkBaseView1,"wxVtkBaseView 1",wxVtkBaseView  *,"");
104   BBTK_OUTPUT(ViewerNV,wxVtkBaseView2,"wxVtkBaseView 2",wxVtkBaseView  *,"");
105   BBTK_OUTPUT(ViewerNV,wxVtkBaseView3,"wxVtkBaseView 3",wxVtkBaseView  *,"");
106   BBTK_OUTPUT(ViewerNV,wxVtkBaseView4,"wxVtkBaseView 4",wxVtkBaseView  *,"");
107   BBTK_OUTPUT(ViewerNV,Renderer1,"Renderer 1",vtkRenderer *,"");
108   BBTK_OUTPUT(ViewerNV,Renderer2,"Renderer 2",vtkRenderer *,"");
109   BBTK_OUTPUT(ViewerNV,Renderer3,"Renderer 3",vtkRenderer *,"");
110   BBTK_OUTPUT(ViewerNV,Renderer4,"Renderer 4",vtkRenderer *,"");
111   BBTK_OUTPUT(ViewerNV,Interactor1,"Interactor1",vtkRenderWindowInteractor *,"");
112   BBTK_OUTPUT(ViewerNV,Point,"Axis point",std::vector<int>,"");
113
114 BBTK_END_DESCRIBE_BLACK_BOX(ViewerNV);
115 }
116 // EO namespace bbcreaMaracasVisu
117
118 #endif // __bbcreaMaracasVisuViewerNV_h_INCLUDED__
119 #endif // _USE_WXWIDGETS_