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

Method OnCreateSmoothedSurface

Modules/SegmentationUI/src/QmitkMultiLabelManager.cpp:353–396  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

351}
352
353void QmitkMultiLabelManager::OnCreateSmoothedSurface(bool /*triggered*/)
354{
355 mitk::ToolManagerProvider::GetInstance()->GetToolManager()->ActivateTool(-1);
356
357 auto currentLabel = this->GetMultiLabelSegmentation()->GetLabel(this->GetSelectedLabels().front());
358
359 try
360 {
361 if (currentLabel.IsNull())
362 mitkThrow() << "Invalid state context menu action was triggered with an invalid label id. Label id: " << this->GetSelectedLabels().front();
363
364 auto pixelValue = currentLabel->GetValue();
365
366 mitk::LabelSetImageToSurfaceThreadedFilter::Pointer surfaceFilter = mitk::LabelSetImageToSurfaceThreadedFilter::New();
367
368 itk::SimpleMemberCommand<QmitkMultiLabelManager>::Pointer successCommand =
369 itk::SimpleMemberCommand<QmitkMultiLabelManager>::New();
370 successCommand->SetCallbackFunction(this, &QmitkMultiLabelManager::OnThreadedCalculationDone);
371 surfaceFilter->AddObserver(mitk::ResultAvailable(), successCommand);
372
373 itk::SimpleMemberCommand<QmitkMultiLabelManager>::Pointer errorCommand =
374 itk::SimpleMemberCommand<QmitkMultiLabelManager>::New();
375 errorCommand->SetCallbackFunction(this, &QmitkMultiLabelManager::OnThreadedCalculationDone);
376 surfaceFilter->AddObserver(mitk::ProcessingError(), errorCommand);
377
378 mitk::DataNode::Pointer groupNode = this->GetMultiLabelNode();
379 surfaceFilter->SetPointerParameter("Group node", groupNode);
380 surfaceFilter->SetPointerParameter("Input", this->GetMultiLabelSegmentation());
381 surfaceFilter->SetParameter("RequestedLabel", pixelValue);
382 surfaceFilter->SetParameter("Smooth", true);
383 surfaceFilter->SetDataStorage(*m_DataStorage);
384
385 mitk::StatusBar::GetInstance()->DisplayText("Surface creation is running in background...");
386
387 surfaceFilter->StartAlgorithm();
388 }
389 catch (mitk::Exception &e)
390 {
391 MITK_ERROR << "Exception caught: " << e.GetDescription();
392 QMessageBox::information(this,
393 "Create Surface",
394 "Could not create a surface mesh out of the selected label. See error log for details.\n");
395 }
396}
397
398void QmitkMultiLabelManager::OnCreateDetailedSurface(bool /*triggered*/)
399{

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