| 396 | } |
| 397 | |
| 398 | void QmitkMultiLabelManager::OnCreateDetailedSurface(bool /*triggered*/) |
| 399 | { |
| 400 | mitk::ToolManagerProvider::GetInstance()->GetToolManager()->ActivateTool(-1); |
| 401 | |
| 402 | auto currentLabel = this->GetMultiLabelSegmentation()->GetLabel(this->GetSelectedLabels().front()); |
| 403 | |
| 404 | try |
| 405 | { |
| 406 | if (currentLabel.IsNull()) |
| 407 | mitkThrow() << "Invalid state context menu action was triggered with an invalid label id. Label id: " << this->GetSelectedLabels().front(); |
| 408 | |
| 409 | auto pixelValue = currentLabel->GetValue(); |
| 410 | |
| 411 | mitk::LabelSetImageToSurfaceThreadedFilter::Pointer surfaceFilter = mitk::LabelSetImageToSurfaceThreadedFilter::New(); |
| 412 | |
| 413 | itk::SimpleMemberCommand<QmitkMultiLabelManager>::Pointer successCommand = |
| 414 | itk::SimpleMemberCommand<QmitkMultiLabelManager>::New(); |
| 415 | successCommand->SetCallbackFunction(this, &QmitkMultiLabelManager::OnThreadedCalculationDone); |
| 416 | surfaceFilter->AddObserver(mitk::ResultAvailable(), successCommand); |
| 417 | |
| 418 | itk::SimpleMemberCommand<QmitkMultiLabelManager>::Pointer errorCommand = |
| 419 | itk::SimpleMemberCommand<QmitkMultiLabelManager>::New(); |
| 420 | errorCommand->SetCallbackFunction(this, &QmitkMultiLabelManager::OnThreadedCalculationDone); |
| 421 | surfaceFilter->AddObserver(mitk::ProcessingError(), errorCommand); |
| 422 | |
| 423 | mitk::DataNode::Pointer groupNode = this->GetMultiLabelNode(); |
| 424 | surfaceFilter->SetPointerParameter("Group node", groupNode); |
| 425 | surfaceFilter->SetPointerParameter("Input", this->GetMultiLabelSegmentation()); |
| 426 | surfaceFilter->SetParameter("RequestedLabel", pixelValue); |
| 427 | surfaceFilter->SetParameter("Smooth", false); |
| 428 | surfaceFilter->SetDataStorage(*m_DataStorage); |
| 429 | |
| 430 | mitk::StatusBar::GetInstance()->DisplayText("Surface creation is running in background..."); |
| 431 | |
| 432 | surfaceFilter->StartAlgorithm(); |
| 433 | } |
| 434 | catch (mitk::Exception &e) |
| 435 | { |
| 436 | MITK_ERROR << "Exception caught: " << e.GetDescription(); |
| 437 | QMessageBox::information(this, |
| 438 | "Create Surface", |
| 439 | "Could not create a surface mesh out of the selected label. See error log for details.\n"); |
| 440 | } |
| 441 | } |
| 442 | |
| 443 | void QmitkMultiLabelManager::OnSavePreset() |
| 444 | { |
nothing calls this directly
no test coverage detected