| 330 | } |
| 331 | |
| 332 | void 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 |
no test coverage detected