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