Program: vv
Module: $RCSfile: vvToolBinarize.cxx,v $
Language: C++
- Date: $Date: 2010/03/01 15:38:09 $
- Version: $Revision: 1.10 $
+ Date: $Date: 2010/03/17 11:22:18 $
+ Version: $Revision: 1.12 $
Author : David Sarrut (david.sarrut@creatis.insa-lyon.fr)
Copyright (C) 2008
mInteractiveDisplayIsEnabled = mCheckBoxInteractiveDisplay->isChecked();
// Connect signals & slots
- connect(mThresholdSlider1, SIGNAL(valueChanged(double)), this, SLOT(valueChangedT1(double)));
- connect(mThresholdSlider2, SIGNAL(valueChanged(double)), this, SLOT(valueChangedT2(double)));
connect(mRadioButtonLowerThan, SIGNAL(toggled(bool)), this, SLOT(enableLowerThan(bool)));
connect(mCheckBoxUseFG, SIGNAL(toggled(bool)), this, SLOT(useFGBGtoggled(bool)));
connect(mCheckBoxUseBG, SIGNAL(toggled(bool)), this, SLOT(useFGBGtoggled(bool)));
mBGSlider->SetText("Background value");
// Main filter
- mFilter = new clitk::BinarizeImageGenericFilter<args_info_clitkBinarizeImage>; //DS PUT IN BASECLASS ?
+ mFilter = new clitk::BinarizeImageGenericFilter<args_info_clitkBinarizeImage>;
+
+ // Set how many inputs are needed for this tool
+ AddInputSelector(mFilter);
}
//------------------------------------------------------------------------------
RemoveVTKObjects();
}
else {
- for(unsigned int i=0; i<mImageContour.size(); i++)
+ for(unsigned int i=0; i<mImageContour.size(); i++) {
mImageContour[i]->showActors();
+ if (mRadioButtonLowerThan->isChecked())
+ mImageContourLower[i]->showActors();
+ }
if (mCurrentSlicerManager)
mCurrentSlicerManager->Render();
}
//------------------------------------------------------------------------------
void vvToolBinarize::RemoveVTKObjects() {
- for(unsigned int i=0; i<mImageContour.size(); i++)
+ for(unsigned int i=0; i<mImageContour.size(); i++) {
mImageContour[i]->hideActors();
+ mImageContourLower[i]->hideActors();
+ }
if (mCurrentSlicerManager)
mCurrentSlicerManager->Render();
}
//------------------------------------------------------------------------------
void vvToolBinarize::reject() {
+ DD("vvToolBinarize::reject");
RemoveVTKObjects();
return vvToolWidgetBase::reject();
}
void vvToolBinarize::enableLowerThan(bool b) {
if (!b) {
mThresholdSlider1->resetMaximum();
+ for(unsigned int i=0; i<mImageContour.size(); i++) {
+ mImageContourLower[i]->hideActors();
+ }
+ mCurrentSlicerManager->Render();
}
else {
valueChangedT1(mThresholdSlider1->GetValue());
+ valueChangedT2(mThresholdSlider2->GetValue());
+ for(unsigned int i=0; i<mImageContour.size(); i++) {
+ mImageContourLower[i]->showActors();
+ }
+ mCurrentSlicerManager->Render();
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
+// void vvToolBinarize::InputIsSelected(std::vector<vvSlicerManager *> & m) {
+// DD("vvToolBinarize::InputIsSelected vector in binarize");
+// DD(m.size());
+// }
void vvToolBinarize::InputIsSelected(vvSlicerManager * m) {
mCurrentSlicerManager = m;
mBGSlider->SetMinimum(mCurrentImage->GetFirstVTKImageData()->GetScalarTypeMin());
mFGSlider->SetValue(1);
mBGSlider->SetValue(0);
+ mFGSlider->SetSingleStep(1);
+ mBGSlider->SetSingleStep(1);
// VTK objects for interactive display
for(int i=0;i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
mImageContour.push_back(new vvImageContour);
mImageContour[i]->setSlicer(mCurrentSlicerManager->GetSlicer(i));
+ mImageContour[i]->setColor(1.0, 0.0, 0.0);
+ mImageContourLower.push_back(new vvImageContour);
+ mImageContourLower[i]->setSlicer(mCurrentSlicerManager->GetSlicer(i));
+ mImageContourLower[i]->setColor(0.0, 0.0, 1.0);
}
valueChangedT1(mThresholdSlider1->GetValue());
+
+ connect(mThresholdSlider1, SIGNAL(valueChanged(double)), this, SLOT(valueChangedT1(double)));
+ connect(mThresholdSlider2, SIGNAL(valueChanged(double)), this, SLOT(valueChangedT2(double)));
+
connect(mCurrentSlicerManager,SIGNAL(UpdateSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
connect(mCurrentSlicerManager,SIGNAL(UpdateTSlice(int,int)),this,SLOT(UpdateSlice(int, int)));
if (!mCurrentSlicerManager) close();
for(int i=0;i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
mImageContour[i]->update(mThresholdSlider1->GetValue());
+ if (mRadioButtonLowerThan->isChecked())
+ mImageContourLower[i]->update(mThresholdSlider2->GetValue());
+
}
mCurrentSlicerManager->Render();
}
//------------------------------------------------------------------------------
void vvToolBinarize::valueChangedT2(double v) {
- if (mRadioButtonLowerThan->isChecked()) mThresholdSlider1->SetMaximum(v);
+ // DD("valueChangedT2");
+ if (mRadioButtonLowerThan->isChecked()) {
+ mThresholdSlider1->SetMaximum(v);
+ if (!mInteractiveDisplayIsEnabled) return;
+ for(int i=0;i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
+ mImageContourLower[i]->update(v);
+ }
+ mCurrentSlicerManager->Render();
+ }
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolBinarize::valueChangedT1(double v) {
+ // DD("valueChangedT1");
if (!mCurrentSlicerManager) close();
mThresholdSlider2->SetMinimum(v);
- int m1 = (int)lrint(v);
+ // int m1 = (int)lrint(v);
if (!mInteractiveDisplayIsEnabled) return;
for(int i=0;i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
- mImageContour[i]->update(m1);
+ mImageContour[i]->update(v);
}
mCurrentSlicerManager->Render();
}