MCPcopy Create free account
hub / github.com/MITK/MITK / OnCreateDetailedSurface

Method OnCreateDetailedSurface

Modules/SegmentationUI/src/QmitkMultiLabelManager.cpp:398–441  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

396}
397
398void 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
443void QmitkMultiLabelManager::OnSavePreset()
444{

Callers

nothing calls this directly

Calls 15

GetSelectedLabelsMethod · 0.95
GetMultiLabelNodeMethod · 0.95
ResultAvailableClass · 0.85
ProcessingErrorClass · 0.85
ActivateToolMethod · 0.80
frontMethod · 0.80
AddObserverMethod · 0.80
SetPointerParameterMethod · 0.80
StartAlgorithmMethod · 0.80
NewFunction · 0.50
GetToolManagerMethod · 0.45

Tested by

no test coverage detected