]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/Contour/ContourVOIWidget.cxx
BUG MACOS
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / Contour / ContourVOIWidget.cxx
1
2 #include "ContourVOIWidget.h"
3
4 #include <vtkImageMapToColors.h>
5 #include <vtkImageActor.h>
6
7
8
9 //-------------------------------------------------------------------
10 //-------------------------------------------------------------------
11 //-------------------------------------------------------------------
12
13   wxWidgetSliderMinMaxVOI :: wxWidgetSliderMinMaxVOI(ContourVOIWidget *contourtool,
14                                                                                                          mBarRange *modelBarRange )
15                 :wxEvtHandler()
16                 {                       
17                         modBarRange = modelBarRange;
18                         mcontourtool = contourtool;
19                         modBarRange->PushEventHandler(this);
20                         Connect(modBarRange->GetId(),wxEVT_TSBAR,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onBarrange );
21                         Connect(modBarRange->GetId(),wxEVT_TSBAR_ACTUAL,(wxObjectEventFunction) (wxCommandEventFunction)  &wxWidgetSliderMinMaxVOI::onActualChange_Bar );
22                         Connect(modBarRange->GetId(),wxEVT_TSBAR_START,(wxObjectEventFunction) (wxCommandEventFunction)  &wxWidgetSliderMinMaxVOI::onStartChange_Bar );
23                         Connect(modBarRange->GetId(),wxEVT_TSBAR_END,(wxObjectEventFunction) (wxCommandEventFunction)  &wxWidgetSliderMinMaxVOI::onEndChange_Bar );
24                         Connect(modBarRange->GetId(),wxEVT_SELECTION_END,(wxObjectEventFunction) (wxCommandEventFunction)  &wxWidgetSliderMinMaxVOI::onSelectionEnd );
25                         Connect(modBarRange->GetId(),wxEVT_TSBAR_MOVED,(wxObjectEventFunction) (wxCommandEventFunction)  &wxWidgetSliderMinMaxVOI::onMovedBar );                
26                 }
27
28                 wxWidgetSliderMinMaxVOI ::  ~wxWidgetSliderMinMaxVOI()
29                 {
30                         
31                 }
32                 
33
34           //--------------------------------------------------------------------------------------------------------------------------------
35           // Min-Max Barrange received events
36           //--------------------------------------------------------------------------------------------------------------------------------
37                 void wxWidgetSliderMinMaxVOI :: onBarrange(wxCommandEvent& event)
38                 {
39
40                 }
41                 void wxWidgetSliderMinMaxVOI :: onActualChange_Bar(wxCommandEvent& event)
42                 {
43 std::cout << "wxWidgetSliderMinMaxVOI ::onActualChange_Bar" << std::endl;
44                         wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
45                         wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetActual());
46                         wxvtk2dbaseview->Refresh();
47                 }
48                 void wxWidgetSliderMinMaxVOI :: onStartChange_Bar(wxCommandEvent& event)
49                 {
50 std::cout << "wxWidgetSliderMinMaxVOI ::onStartChange_Bar" << std::endl;
51                         wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
52                         wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetStart());
53                         wxvtk2dbaseview->Refresh();
54 //EED                   mcontourtool->ProcessOutputs();
55                 }
56                 void wxWidgetSliderMinMaxVOI :: onEndChange_Bar(wxCommandEvent& event)
57                 {
58 std::cout << "wxWidgetSliderMinMaxVOI ::onEndChange_Bar" << std::endl;
59                         wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
60                         wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetEnd());
61                         wxvtk2dbaseview->Refresh();
62 //EED                   mcontourtool->ProcessOutputs();
63                 }
64                 void wxWidgetSliderMinMaxVOI :: onSelectionEnd(wxCommandEvent& event)
65                 {
66                 }
67                 void wxWidgetSliderMinMaxVOI :: onMovedBar(wxCommandEvent& event)
68                 {
69 //EED                   mcontourtool->ProcessOutputs();
70                 }
71 //----------------------------------------------------------------------
72 //----------------------------------------------------------------------
73 //----------------------------------------------------------------------
74
75
76   ContourVOIWidget::ContourVOIWidget(wxWindow *parent, wxVtkBaseView *wxvtkbaseview, vtkImageData* imagedata)
77     : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
78   {
79 //EED    this->mbbtkContourCrown        = contourcrown;
80     this->imagedata                                     = imagedata;
81         this->wxvtkbaseview                             = wxvtkbaseview;
82         wxPanel *panel                                  = this;
83     wxSizer *sizer                                      = NULL;
84         
85         mbarrange = new mBarRange(panel,200, 65); 
86         mbarrange -> SetOrientation( true );
87         mbarrange -> setActiveStateTo(true);
88         mbarrange -> setVisibleLabels( true );
89         mbarrange -> setDeviceEndMargin(10);
90         mbarrange -> setRepresentedValues( 0 , 100 );
91         mbarrange -> setDeviceBlitStart(10,10); 
92         mbarrange -> setIfWithActualDrawed( true );
93         mbarrange -> SetStart( 10 );
94         mbarrange -> SetEnd( 90 );  
95
96         //wxWidgetSliderMinMaxVOI * eventHandler = new wxWidgetSliderMinMaxVOI(this, mbarrange); // JPRx
97
98         wxFlexGridSizer *sizer1 = new wxFlexGridSizer(10);
99         sizer1->AddGrowableCol(0);
100         sizer1->Add(mbarrange,1,wxGROW);
101         sizer = sizer1;
102         panel -> SetSizer(sizer);
103
104     panel       ->      SetAutoLayout(true);
105     panel       ->      Layout();  
106   }
107
108   // ------------------------------------------------------------------------
109
110   ContourVOIWidget::~ContourVOIWidget()
111   {
112   }
113
114   // ------------------------------------------------------------------------
115   wxVtkBaseView *ContourVOIWidget::GetWxVtkBaseView()
116         {
117                 return this->wxvtkbaseview;
118         }
119
120
121   // ------------------------------------------------------------------------
122
123
124   void ContourVOIWidget::ConfigureVTK()
125   {
126           double spc[3];
127           this->imagedata->GetSpacing(spc);
128
129           // LG 14 dec 2007
130           int dim[3];
131           this->imagedata->GetDimensions(dim);
132           mbarrange -> setRepresentedValues( 0 , dim[2] );
133         
134         // Rectangulo
135         _manRoiControl  = new manualRoiControler();
136         _mContourModel  = new manualContourModelRoi();
137         _mViewRoi               = new manualViewRoi();
138         _mViewRoi->SetModel( _mContourModel );
139         _mViewRoi->SetWxVtkBaseView( this->wxvtkbaseview );
140         _mViewRoi->SetRange( 2 );
141         _mViewRoi->SetZ( 1000 );
142
143 //EED 3 oct 2006
144         _mViewRoi->SetSpacing(spc);
145
146         _manRoiControl->SetModelView( _mContourModel , _mViewRoi );
147          this->wxvtkbaseview->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manRoiControl );
148         _manRoiControl->CreateNewManualContour();
149         _manRoiControl->SetActive(true);
150         _mViewRoi->RefreshContour();
151
152
153   }
154
155 //--------------------------------------------------------------------------------------------------------------------------------
156 void ContourVOIWidget::GetVOI( int voi[6] )
157 {
158         double minX,minY,maxX,maxY;
159         _mViewRoi->GetMinMax(minX,minY,maxX,maxY);
160         voi[0]=(int)minX;
161         voi[1]=(int)maxX;
162         voi[2]=(int)minY;
163         voi[3]=(int)maxY;
164
165         voi[4] =  mbarrange->GetStart();
166         voi[5] =  mbarrange->GetEnd();
167
168         int border[6];
169         wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)wxvtkbaseview;
170         wxvtk2dbaseview->GetVtkBaseData()->GetImageData()->GetExtent( border );
171
172         if ( (voi[0]==voi[1]) || (voi[2]==voi[3]) || (voi[4]==voi[5]) )
173         {
174                         voi[0] = border[0];
175                         voi[1] = border[1];
176                         voi[2] = border[2];
177                         voi[3] = border[3];
178                         voi[4] = border[4];
179                         voi[5] = border[5];
180         }
181
182         // border min
183         if (voi[0]<border[0]) { voi[0]=border[0]; }
184         if (voi[2]<border[2]) { voi[2]=border[2]; }
185         if (voi[4]<border[4]) { voi[4]=border[4]; }
186
187         // border max
188         if (voi[1]>border[1]) { voi[1]=border[1]; }
189         if (voi[3]>border[3]) { voi[3]=border[3]; }
190         if (voi[5]>border[5]) { voi[5]=border[5]; }
191 }
192
193 //--------------------------------------------------------------------------------------------------------------------------------
194 /*EED
195 void wxMaracasCoutourTool::ProcessOutputs()
196 {
197         int voi[6];
198         GetVOI(voi);
199         char buffer[40];
200         sprintf(buffer,"%d %d %d ", voi[0], voi[2], voi[4] );
201         std::string Index(buffer);
202         sprintf(buffer,"%d %d %d ", voi[1]-voi[0]+1, voi[3]-voi[2]+1, voi[5]-voi[4]+1 );
203         std::string Size(buffer);
204         mbbtkContourCrown->bbSetOutputIndex( Index );
205         mbbtkContourCrown->bbSetOutputSize( Size );
206         std::vector<std::string> mod;
207         mod.push_back("Index");
208         mod.push_back("Size");
209         mbbtkContourCrown->bbSignalOutputModification(mod);
210 }
211 */
212
213
214