Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkMultilabelObjectFactory.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 #include "mitkBaseRenderer.h"
16 #include "mitkCoreObjectFactory.h"
17 #include "mitkDataNode.h"
18 #include "mitkProperties.h"
19 #include <mitkCoreServices.h>
20 #include <mitkIPropertyFilters.h>
22 #include <mitkPropertyFilter.h>
23 
25 {
26  static bool alreadyDone = false;
27  if (!alreadyDone)
28  {
29  MITK_DEBUG << "MultilabelObjectFactory c'tor" << std::endl;
30 
32 
33  alreadyDone = true;
34  }
35 }
36 
38 {
39 }
40 
42 {
43  mitk::Mapper::Pointer newMapper = nullptr;
44  mitk::BaseData *data = node->GetData();
45 
47  {
48  if ((dynamic_cast<mitk::LabelSetImage *>(data) != nullptr))
49  {
51  newMapper->SetDataNode(node);
52  }
53  }
54  return newMapper;
55 }
56 
58 {
59  if (node == nullptr)
60  return;
61 
62  if (node->GetData() == nullptr)
63  return;
64 
65  if (dynamic_cast<LabelSetImage *>(node->GetData()) != nullptr)
66  {
68 
69  auto propertyFilters = CoreServices::GetPropertyFilters();
70 
71  if (propertyFilters != nullptr)
72  {
73  PropertyFilter labelSetImageFilter;
74  labelSetImageFilter.AddEntry("binaryimage.hoveringannotationcolor", PropertyFilter::Blacklist);
75  labelSetImageFilter.AddEntry("binaryimage.hoveringcolor", PropertyFilter::Blacklist);
76  labelSetImageFilter.AddEntry("binaryimage.selectedannotationcolor", PropertyFilter::Blacklist);
77  labelSetImageFilter.AddEntry("binaryimage.selectedcolor", PropertyFilter::Blacklist);
78  labelSetImageFilter.AddEntry("outline binary shadow color", PropertyFilter::Blacklist);
79 
80  propertyFilters->AddFilter(labelSetImageFilter, "LabelSetImage");
81  }
82  }
83 }
84 
86 {
87  std::string fileExtension;
88  this->CreateFileExtensions(m_FileExtensionsMap, fileExtension);
89  return fileExtension.c_str();
90 }
91 
93 {
94  return m_FileExtensionsMap;
95 }
96 
98 {
100 }
101 
103 {
104 }
105 
107 {
108  std::string fileExtension;
109  this->CreateFileExtensions(m_SaveFileExtensionsMap, fileExtension);
110  return fileExtension.c_str();
111 }
112 
113 struct RegisterMultilabelObjectFactory
114 {
115  RegisterMultilabelObjectFactory() : m_Factory(mitk::MultilabelObjectFactory::New())
116  {
117  mitk::CoreObjectFactory::GetInstance()->RegisterExtraFactory(m_Factory);
118  }
119 
120  ~RegisterMultilabelObjectFactory() { mitk::CoreObjectFactory::GetInstance()->UnRegisterExtraFactory(m_Factory); }
122 };
123 
124 static RegisterMultilabelObjectFactory registerMultilabelObjectFactory;
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
Set the default properties for general image rendering.
Base of all data objects.
Definition: mitkBaseData.h:37
void AddEntry(const std::string &propertyName, List list)
Add a filter entry for a specific property.
#define MITK_DEBUG
Definition: mitkLogMacros.h:22
static RegisterMultilabelObjectFactory registerMultilabelObjectFactory
void SetDefaultProperties(mitk::DataNode *node) override
BaseData * GetData() const
Get the data object (instance of BaseData, e.g., an Image) managed by this DataNode.
mitk::CoreObjectFactoryBase::MultimapType GetFileExtensionsMap() override
static void CreateFileExtensions(MultimapType fileExtensionsMap, std::string &fileExtensions)
create a string from a map that contains the file extensions
Mapper::Pointer CreateMapper(mitk::DataNode *node, MapperSlotId slotId) override
static IPropertyFilters * GetPropertyFilters(us::ModuleContext *context=us::GetModuleContext())
Get an IPropertyFilters instance.
unsigned int MapperSlotId
Definition: mitkCommon.h:33
std::multimap< std::string, std::string > MultimapType
Class for nodes of the DataTree.
Definition: mitkDataNode.h:57
mitk::CoreObjectFactoryBase::MultimapType GetSaveFileExtensionsMap() override
Consists of blacklist and whitelist entries.