ContourVOIWidget.cxx
Go to the documentation of this file.00001
00002 #include "ContourVOIWidget.h"
00003
00004
00005
00006
00007
00008 wxWidgetSliderMinMaxVOI :: wxWidgetSliderMinMaxVOI(ContourVOIWidget *contourtool,
00009 mBarRange *modelBarRange )
00010 :wxEvtHandler()
00011 {
00012 modBarRange = modelBarRange;
00013 mcontourtool = contourtool;
00014 modBarRange->PushEventHandler(this);
00015 Connect(modBarRange->GetId(),wxEVT_TSBAR,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onBarrange );
00016 Connect(modBarRange->GetId(),wxEVT_TSBAR_ACTUAL,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onActualChange_Bar );
00017 Connect(modBarRange->GetId(),wxEVT_TSBAR_START,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onStartChange_Bar );
00018 Connect(modBarRange->GetId(),wxEVT_TSBAR_END,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onEndChange_Bar );
00019 Connect(modBarRange->GetId(),wxEVT_SELECTION_END,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onSelectionEnd );
00020 Connect(modBarRange->GetId(),wxEVT_TSBAR_MOVED,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMaxVOI::onMovedBar );
00021 }
00022
00023 wxWidgetSliderMinMaxVOI :: ~wxWidgetSliderMinMaxVOI()
00024 {
00025
00026 }
00027
00028
00029
00030
00031
00032 void wxWidgetSliderMinMaxVOI :: onBarrange(wxCommandEvent& event)
00033 {
00034
00035 }
00036 void wxWidgetSliderMinMaxVOI :: onActualChange_Bar(wxCommandEvent& event)
00037 {
00038 std::cout << "wxWidgetSliderMinMaxVOI ::onActualChange_Bar" << std::endl;
00039 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
00040 wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetActual());
00041 wxvtk2dbaseview->Refresh();
00042 }
00043 void wxWidgetSliderMinMaxVOI :: onStartChange_Bar(wxCommandEvent& event)
00044 {
00045 std::cout << "wxWidgetSliderMinMaxVOI ::onStartChange_Bar" << std::endl;
00046 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
00047 wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetStart());
00048 wxvtk2dbaseview->Refresh();
00049
00050 }
00051 void wxWidgetSliderMinMaxVOI :: onEndChange_Bar(wxCommandEvent& event)
00052 {
00053 std::cout << "wxWidgetSliderMinMaxVOI ::onEndChange_Bar" << std::endl;
00054 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)mcontourtool->GetWxVtkBaseView();
00055 wxvtk2dbaseview->GetVtkBaseData()->SetZ(modBarRange->GetEnd());
00056 wxvtk2dbaseview->Refresh();
00057
00058 }
00059 void wxWidgetSliderMinMaxVOI :: onSelectionEnd(wxCommandEvent& event)
00060 {
00061 }
00062 void wxWidgetSliderMinMaxVOI :: onMovedBar(wxCommandEvent& event)
00063 {
00064
00065 }
00066
00067
00068
00069
00070
00071 ContourVOIWidget::ContourVOIWidget(wxWindow *parent, wxVtkBaseView *wxvtkbaseview, vtkImageData* imagedata)
00072 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
00073 {
00074
00075 this->imagedata = imagedata;
00076 this->wxvtkbaseview = wxvtkbaseview;
00077 wxPanel *panel = this;
00078 wxSizer *sizer = NULL;
00079
00080 mbarrange = new mBarRange(panel,200, 65);
00081 mbarrange -> SetOrientation( true );
00082 mbarrange -> setActiveStateTo(true);
00083 mbarrange -> setVisibleLabels( true );
00084 mbarrange -> setDeviceEndMargin(10);
00085 mbarrange -> setRepresentedValues( 0 , 100 );
00086 mbarrange -> setDeviceBlitStart(10,10);
00087 mbarrange -> setIfWithActualDrawed( true );
00088 mbarrange -> SetStart( 10 );
00089 mbarrange -> SetEnd( 90 );
00090
00091
00092
00093 wxFlexGridSizer *sizer1 = new wxFlexGridSizer(10);
00094 sizer1->AddGrowableCol(0);
00095 sizer1->Add(mbarrange,1,wxGROW);
00096 sizer = sizer1;
00097 panel -> SetSizer(sizer);
00098
00099 panel -> SetAutoLayout(true);
00100 panel -> Layout();
00101 }
00102
00103
00104
00105 ContourVOIWidget::~ContourVOIWidget()
00106 {
00107 }
00108
00109
00110 wxVtkBaseView *ContourVOIWidget::GetWxVtkBaseView()
00111 {
00112 return this->wxvtkbaseview;
00113 }
00114
00115
00116
00117
00118
00119 void ContourVOIWidget::ConfigureVTK()
00120 {
00121 double spc[3];
00122 this->imagedata->GetSpacing(spc);
00123
00124
00125 int dim[3];
00126 this->imagedata->GetDimensions(dim);
00127 mbarrange -> setRepresentedValues( 0 , dim[2] );
00128
00129
00130 _manRoiControl = new manualRoiControler();
00131 _mContourModel = new manualContourModelRoi();
00132 _mViewRoi = new manualViewRoi();
00133 _mViewRoi->SetModel( _mContourModel );
00134 _mViewRoi->SetWxVtkBaseView( this->wxvtkbaseview );
00135 _mViewRoi->SetRange( 2 );
00136 _mViewRoi->SetZ( 1000 );
00137
00138
00139 _mViewRoi->SetSpacing(spc);
00140
00141 _manRoiControl->SetModelView( _mContourModel , _mViewRoi );
00142 ((vtkInteractorStyleBaseView*)this->wxvtkbaseview->GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _manRoiControl );
00143 _manRoiControl->CreateNewManualContour();
00144 _manRoiControl->SetActive(true);
00145 _mViewRoi->RefreshContour();
00146
00147
00148 }
00149
00150
00151 void ContourVOIWidget::GetVOI( int voi[6] )
00152 {
00153 double minX,minY,maxX,maxY;
00154 _mViewRoi->GetMinMax(minX,minY,maxX,maxY);
00155 voi[0]=(int)minX;
00156 voi[1]=(int)maxX;
00157 voi[2]=(int)minY;
00158 voi[3]=(int)maxY;
00159
00160 voi[4] = mbarrange->GetStart();
00161 voi[5] = mbarrange->GetEnd();
00162
00163 int border[6];
00164 wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)wxvtkbaseview;
00165 wxvtk2dbaseview->GetVtkBaseData()->GetImageData()->GetExtent( border );
00166
00167 if ( (voi[0]==voi[1]) || (voi[2]==voi[3]) || (voi[4]==voi[5]) )
00168 {
00169 voi[0] = border[0];
00170 voi[1] = border[1];
00171 voi[2] = border[2];
00172 voi[3] = border[3];
00173 voi[4] = border[4];
00174 voi[5] = border[5];
00175 }
00176
00177
00178 if (voi[0]<border[0]) { voi[0]=border[0]; }
00179 if (voi[2]<border[2]) { voi[2]=border[2]; }
00180 if (voi[4]<border[4]) { voi[4]=border[4]; }
00181
00182
00183 if (voi[1]>border[1]) { voi[1]=border[1]; }
00184 if (voi[3]>border[3]) { voi[3]=border[3]; }
00185 if (voi[5]>border[5]) { voi[5]=border[5]; }
00186 }
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209