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

Method GenerateImageSlice

Modules/Multilabel/src/mitkLabelSetImageVtkMapper2D.cpp:332–433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

330}
331
332void mitk::LabelSetImageVtkMapper2D::GenerateImageSlice(mitk::BaseRenderer* renderer, const std::vector<mitk::MultiLabelSegmentation::GroupIndexType>& outdatedGroupIDs)
333{
334 LocalStorage* localStorage = m_LSH.GetLocalStorage(renderer);
335 mitk::DataNode* node = this->GetDataNode();
336 auto* segmentation = dynamic_cast<mitk::MultiLabelSegmentation*>(node->GetData());
337 assert(segmentation && segmentation->IsInitialized());
338
339 segmentation->Update();
340
341 const auto numberOfLayers = segmentation->GetNumberOfGroups();
342
343 if (numberOfLayers != localStorage->m_NumberOfLayers)
344 {
345 if (numberOfLayers > localStorage->m_NumberOfLayers)
346 {
347 for (unsigned int lidx = localStorage->m_NumberOfLayers; lidx < numberOfLayers; ++lidx)
348 {
349 localStorage->m_GroupImageIDs.push_back(nullptr);
350 localStorage->m_ReslicedImageVector.push_back(vtkSmartPointer<vtkImageData>::New());
351 localStorage->m_ReslicerVector.push_back(mitk::ExtractSliceFilter::New());
352 localStorage->m_LayerTextureVector.push_back(vtkSmartPointer<vtkNeverTranslucentTexture>::New());
353 localStorage->m_LayerMapperVector.push_back(vtkSmartPointer<vtkPolyDataMapper>::New());
354 localStorage->m_LayerActorVector.push_back(vtkSmartPointer<vtkActor>::New());
355 localStorage->m_LayerImageMapToColors.push_back(vtkSmartPointer<vtkImageMapToColors>::New());
356
357 // do not repeat the texture (the image)
358 localStorage->m_LayerTextureVector[lidx]->RepeatOff();
359 // set corresponding mappers for the actors
360 localStorage->m_LayerActorVector[lidx]->SetMapper(localStorage->m_LayerMapperVector[lidx]);
361 }
362 }
363 else
364 {
365 localStorage->m_GroupImageIDs.resize(numberOfLayers);
366 localStorage->m_ReslicedImageVector.resize(numberOfLayers);
367 localStorage->m_ReslicerVector.resize(numberOfLayers);
368 localStorage->m_LayerTextureVector.resize(numberOfLayers);
369 localStorage->m_LayerMapperVector.resize(numberOfLayers);
370 localStorage->m_LayerActorVector.resize(numberOfLayers);
371 localStorage->m_LayerImageMapToColors.resize(numberOfLayers);
372 }
373 localStorage->m_NumberOfLayers = numberOfLayers;
374
375 localStorage->m_Actors = vtkSmartPointer<vtkPropAssembly>::New();
376
377 for (unsigned int lidx = 0; lidx < numberOfLayers; ++lidx)
378 {
379 localStorage->m_Actors->AddPart(localStorage->m_LayerActorVector[lidx]);
380 }
381 localStorage->m_Actors->AddPart(localStorage->m_OutlineShadowActor);
382 localStorage->m_Actors->AddPart(localStorage->m_OutlineActor);
383 }
384
385 for (const auto groupID : outdatedGroupIDs)
386 {
387 const auto groupImage = segmentation->GetGroupImage(groupID);
388 localStorage->m_GroupImageIDs[groupID] = groupImage;
389

Callers 1

Calls 15

GeneratePlaneMethod · 0.95
GetNumberOfGroupsMethod · 0.80
SetMapperMethod · 0.80
GetClippedPlaneBoundsMethod · 0.80
GetOutputSpacingMethod · 0.80
NewFunction · 0.50
GetLocalStorageMethod · 0.45
GetDataNodeMethod · 0.45
GetDataMethod · 0.45
IsInitializedMethod · 0.45
UpdateMethod · 0.45
AddPartMethod · 0.45

Tested by

no test coverage detected