2 #include "ContourVOIWidget.h"
4 #include "manualContourModelRoi.h"
5 #include <vtkImageMapToColors.h>
6 #include <vtkImageActor.h>
8 #include "wxVtk2DBaseView.h"
11 //-------------------------------------------------------------------
12 //-------------------------------------------------------------------
13 //-------------------------------------------------------------------
15 wxWidgetSliderMinMaxVOI :: wxWidgetSliderMinMaxVOI(ContourVOIWidget *contourtool,
16 mBarRange *modelBarRange )
19 modBarRange = modelBarRange;
20 mcontourtool = contourtool;
21 modBarRange->PushEventHandler(this);
22 Connect(modBarRange->GetId(),wxEVT_TSBAR,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onBarrange );
23 Connect(modBarRange->GetId(),wxEVT_TSBAR_ACTUAL,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onActualChange_Bar );
24 Connect(modBarRange->GetId(),wxEVT_TSBAR_START,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onStartChange_Bar );
25 Connect(modBarRange->GetId(),wxEVT_TSBAR_END,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onEndChange_Bar );
26 Connect(modBarRange->GetId(),wxEVT_SELECTION_END,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onSelectionEnd );
27 Connect(modBarRange->GetId(),wxEVT_TSBAR_MOVED,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onMovedBar );
30 wxWidgetSliderMinMaxVOI :: ~wxWidgetSliderMinMaxVOI()
36 //--------------------------------------------------------------------------------------------------------------------------------
37 // Min-Max Barrange received events
38 //--------------------------------------------------------------------------------------------------------------------------------
39 void wxWidgetSliderMinMaxVOI :: onBarrange(wxCommandEvent& event)
43 void wxWidgetSliderMinMaxVOI :: onActualChange_Bar(wxCommandEvent& event)
45 std::cout << "wxWidgetSliderMinMaxVOI ::onActualChange_Bar" << std::endl;
46 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
47 wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetActual());
48 wxvtk2dbaseview->Refresh();
50 void wxWidgetSliderMinMaxVOI :: onStartChange_Bar(wxCommandEvent& event)
52 std::cout << "wxWidgetSliderMinMaxVOI ::onStartChange_Bar" << std::endl;
53 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
54 wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetStart());
55 wxvtk2dbaseview->Refresh();
56 //EED mcontourtool->ProcessOutputs();
58 void wxWidgetSliderMinMaxVOI :: onEndChange_Bar(wxCommandEvent& event)
60 std::cout << "wxWidgetSliderMinMaxVOI ::onEndChange_Bar" << std::endl;
61 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
62 wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetEnd());
63 wxvtk2dbaseview->Refresh();
64 //EED mcontourtool->ProcessOutputs();
66 void wxWidgetSliderMinMaxVOI :: onSelectionEnd(wxCommandEvent& event)
69 void wxWidgetSliderMinMaxVOI :: onMovedBar(wxCommandEvent& event)
71 //EED mcontourtool->ProcessOutputs();
73 //----------------------------------------------------------------------
74 //----------------------------------------------------------------------
75 //----------------------------------------------------------------------
78 ContourVOIWidget::ContourVOIWidget(wxWindow *parent, wxVtkBaseView *wxvtkbaseview, vtkImageData* imagedata)
79 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
81 //EED this->mbbtkContourCrown = contourcrown;
82 this->imagedata = imagedata;
83 this->wxvtkbaseview = wxvtkbaseview;
84 wxPanel *panel = this;
85 wxSizer *sizer = NULL;
87 mbarrange = new mBarRange(panel,200, 65);
88 mbarrange -> SetOrientation( true );
89 mbarrange -> setActiveStateTo(true);
90 mbarrange -> setVisibleLabels( true );
91 mbarrange -> setDeviceEndMargin(10);
92 mbarrange -> setRepresentedValues( 0 , 100 );
93 mbarrange -> setDeviceBlitStart(10,10);
94 mbarrange -> setIfWithActualDrawed( true );
95 mbarrange -> SetStart( 10 );
96 mbarrange -> SetEnd( 90 );
98 //wxWidgetSliderMinMaxVOI * eventHandler = new wxWidgetSliderMinMaxVOI(this, mbarrange); // JPRx
100 wxFlexGridSizer *sizer1 = new wxFlexGridSizer(10);
101 sizer1->AddGrowableCol(0);
102 sizer1->Add(mbarrange,1,wxGROW);
104 panel -> SetSizer(sizer);
106 panel -> SetAutoLayout(true);
110 // ------------------------------------------------------------------------
112 ContourVOIWidget::~ContourVOIWidget()
116 // ------------------------------------------------------------------------
117 wxVtkBaseView *ContourVOIWidget::GetWxVtkBaseView()
119 return this->wxvtkbaseview;
123 // ------------------------------------------------------------------------
126 void ContourVOIWidget::ConfigureVTK()
129 this->imagedata->GetSpacing(spc);
133 this->imagedata->GetDimensions(dim);
134 mbarrange -> setRepresentedValues( 0 , dim[2] );
137 _manRoiControl = new manualRoiControler();
138 _mContourModel = new manualContourModelRoi();
139 _mViewRoi = new manualViewRoi();
140 _mViewRoi->SetModel( _mContourModel );
141 _mViewRoi->SetWxVtkBaseView( this->wxvtkbaseview );
142 _mViewRoi->SetRange( 2 );
143 _mViewRoi->SetZ( 1000 );
146 _mViewRoi->SetSpacing(spc);
148 _manRoiControl->SetModelView( _mContourModel , _mViewRoi );
149 ((vtkInteractorStyleBaseView*)this->wxvtkbaseview->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _manRoiControl );
150 _manRoiControl->CreateNewManualContour();
151 _manRoiControl->SetActive(true);
152 _mViewRoi->RefreshContour();
157 //--------------------------------------------------------------------------------------------------------------------------------
158 void ContourVOIWidget::GetVOI( int voi[6] )
160 double minX,minY,maxX,maxY;
161 _mViewRoi->GetMinMax(minX,minY,maxX,maxY);
167 voi[4] = mbarrange->GetStart();
168 voi[5] = mbarrange->GetEnd();
171 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)wxvtkbaseview;
172 wxvtk2dbaseview->GetVtkBaseData()->GetImageData()->GetExtent( border );
174 if ( (voi[0]==voi[1]) || (voi[2]==voi[3]) || (voi[4]==voi[5]) )
185 if (voi[0]<border[0]) { voi[0]=border[0]; }
186 if (voi[2]<border[2]) { voi[2]=border[2]; }
187 if (voi[4]<border[4]) { voi[4]=border[4]; }
190 if (voi[1]>border[1]) { voi[1]=border[1]; }
191 if (voi[3]>border[3]) { voi[3]=border[3]; }
192 if (voi[5]>border[5]) { voi[5]=border[5]; }
195 //--------------------------------------------------------------------------------------------------------------------------------
197 void wxMaracasCoutourTool::ProcessOutputs()
202 sprintf(buffer,"%d %d %d ", voi[0], voi[2], voi[4] );
203 std::string Index(buffer);
204 sprintf(buffer,"%d %d %d ", voi[1]-voi[0]+1, voi[3]-voi[2]+1, voi[5]-voi[4]+1 );
205 std::string Size(buffer);
206 mbbtkContourCrown->bbSetOutputIndex( Index );
207 mbbtkContourCrown->bbSetOutputSize( Size );
208 std::vector<std::string> mod;
209 mod.push_back("Index");
210 mod.push_back("Size");
211 mbbtkContourCrown->bbSignalOutputModification(mod);