]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuShowNPoints.h
no message
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuShowNPoints.h
1 #ifdef _USE_WXWIDGETS_
2 #ifndef __bbcreaMaracasVisuShowNPoints_h_INCLUDED__
3 #define __bbcreaMaracasVisuShowNPoints_h_INCLUDED__
4 #include "bbtkWxBlackBox.h"
5
6
7 #include "vtkActor.h"
8 #include "vtkSphereSource.h"
9 #include "vtkImageData.h"
10 #include "vtkRenderer.h"
11 #include "vtkTextActor3D.h"
12
13 namespace bbcreaMaracasVisu
14 {
15
16   class ShowNPoints;
17
18   //--------------------------------------------------------------------------
19   class WidgetShowNPoints : public wxPanel
20   {
21   public:
22           WidgetShowNPoints( wxWindow *parent,  ShowNPoints *box);
23           ~WidgetShowNPoints(); 
24           void OnAddPoint(wxCommandEvent &event);   
25           void OnSetPoint(wxCommandEvent& event);
26           void OnRenamePoint(wxCommandEvent& event);
27           void OnErasePoint(wxCommandEvent& event);
28           void OnEraseLastPoint(wxCommandEvent &event);   
29           void OnDeleteAllPoints(wxCommandEvent &event);   
30           void OnSavePoints(wxCommandEvent &event);   
31           void OnLoadPoints(wxCommandEvent &event);
32           void UpdatePoints(wxCommandEvent &event);
33           
34           void RefreshPoint(int id);
35           
36           void SetPoint(std::vector<int> ppoint);
37           void SetColour(std::vector<double> colour);
38           void SetOpacity(double opacity);
39           void SetRadio(double radio);
40           void SetImage(vtkImageData *image);
41           void SetRenderer(vtkRenderer *renderer);
42           std::vector<int> GetLstPointsX();
43           std::vector<int> GetLstPointsY();
44           std::vector<int> GetLstPointsZ();
45           std::vector<std::string> GetLstLabels();
46
47   private:
48
49           void                  AddPoint(int x, int y, int z, std::string label);
50           std::string           CleanSpaces(std::string ss);
51           int                   GetNearestPoint();
52           int                                   IdInsidePoint();
53           void                  ErasePoint(int id);
54           void                  SetOutputBox();
55
56           ShowNPoints                   *mbbShowNPoints;
57           vtkRenderer                   *renderer;
58           std::vector<int>              lstPointsX;
59           std::vector<int>              lstPointsY;
60           std::vector<int>              lstPointsZ;
61           std::vector<std::string>      lstLabels;
62           std::vector<vtkActor*>        lstActorsSphere;//NTU changed from prop3D to Actor
63           std::vector<vtkTextActor3D*>  lstActorsText;
64
65           //NTU: For updating points
66
67           std::vector<vtkSphereSource*> lstSourceSphere;
68
69           std::vector<int>      mpoint;
70           vtkImageData          *mimage;
71           std::vector<double>   mcolour;
72           double                mopacity;
73           double                mradio;
74           wxStaticText          *askPointLabel;
75           wxTextCtrl            *textCtrl;
76           wxStaticText          *txtNrPoints;
77           wxSlider              *sdrOpacity;
78           wxSlider              *sdrRadio;
79   };
80
81 class /*BBTK_EXPORT*/ ShowNPoints
82  : 
83    public bbtk::WxBlackBox
84 {
85   BBTK_BLACK_BOX_INTERFACE(ShowNPoints,bbtk::WxBlackBox);
86   BBTK_DECLARE_INPUT(In, std::vector<int> );
87   BBTK_DECLARE_INPUT(Renderer, vtkRenderer* );
88   BBTK_DECLARE_INPUT(Image, vtkImageData* );
89   BBTK_DECLARE_INPUT(Colour, std::vector<double> );
90   BBTK_DECLARE_INPUT(Opacity, double );
91   BBTK_DECLARE_INPUT(Radio, double );
92   BBTK_DECLARE_OUTPUT( lstPointsX, std::vector<int> );
93   BBTK_DECLARE_OUTPUT( lstPointsY, std::vector<int> );
94   BBTK_DECLARE_OUTPUT( lstPointsZ, std::vector<int> );
95   BBTK_DECLARE_OUTPUT( lstLabels,  std::vector<std::string> );
96   BBTK_PROCESS(Process);
97   void Process();
98   BBTK_CREATE_WIDGET(CreateWidget);
99   void CreateWidget(wxWindow*);
100
101 private:
102         WidgetShowNPoints *mwxwidget; 
103
104 };
105
106 BBTK_BEGIN_DESCRIBE_BLACK_BOX(ShowNPoints,bbtk::WxBlackBox);
107   BBTK_NAME("ShowNPoints");
108   BBTK_AUTHOR("Eduardo DAVILA");
109   BBTK_DESCRIPTION("widget that shows N moints in 3D (vtkActors)");
110   BBTK_CATEGORY("widgetVtk");
111   BBTK_INPUT(ShowNPoints,In,"One Point",std::vector<int>,"");
112   BBTK_INPUT(ShowNPoints,Renderer,"Renderer",vtkRenderer*,"");
113   BBTK_INPUT(ShowNPoints,Image,"vktkImageData",vtkImageData*,"");
114   BBTK_INPUT(ShowNPoints,Colour,"Colour of the actor",std::vector<double>,"colour");
115   BBTK_INPUT(ShowNPoints,Opacity,"Opacity of the actor",double,"");
116   BBTK_INPUT(ShowNPoints,Radio,"Radio of the spheres",double,"");
117   BBTK_OUTPUT(ShowNPoints , lstPointsX , " list of points X ", std::vector<int> ,"");
118   BBTK_OUTPUT(ShowNPoints , lstPointsY , " list of points Y ", std::vector<int> ,"");
119   BBTK_OUTPUT(ShowNPoints , lstPointsZ , " list of points Z ", std::vector<int> ,"");
120   BBTK_OUTPUT(ShowNPoints , lstLabels , " list of labels ", std::vector<std::string> ,"");
121 BBTK_END_DESCRIBE_BLACK_BOX(ShowNPoints);
122 }
123 // EO namespace bbcreaMaracasVisu
124
125 #endif // __bbcreaMaracasVisuShowNPoints_h_INCLUDED__
126 #endif // _USE_WXWIDGETS_