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

Function AddLabelToGroupTree

Modules/SegmentationUI/src/QmitkMultiLabelTreeModel.cpp:795–832  ·  view source on GitHub ↗

Helper function that adds a labek into the item tree. Passes back the new created instance iten*/

Source from the content-addressed store, hash-verified

793
794/**Helper function that adds a labek into the item tree. Passes back the new created instance iten*/
795QmitkMultiLabelSegTreeItem* AddLabelToGroupTree(mitk::Label* label, QmitkMultiLabelSegTreeItem* groupItem, bool& newLabelItemCreated)
796{
797 if (nullptr == groupItem) return nullptr;
798 if (nullptr == label) return nullptr;
799
800 newLabelItemCreated = false;
801
802 std::set<std::string> labelNames;
803 for (auto labelItem : groupItem->m_childItems)
804 {
805 labelNames.emplace(labelItem->GetLabel()->GetName());
806 }
807
808 QmitkMultiLabelSegTreeItem* labelItem = nullptr;
809 auto finding = labelNames.find(label->GetName());
810 if (finding != labelNames.end())
811 { //other label with same name exists
812 labelItem = groupItem->m_childItems[std::distance(labelNames.begin(), finding)];
813 }
814 else
815 {
816 newLabelItemCreated = true;
817 labelItem = new QmitkMultiLabelSegTreeItem(QmitkMultiLabelSegTreeItem::ItemType::Label, groupItem, nullptr, label->GetName());
818
819 auto predicate = [label](const std::string& name) { return name > label->GetName(); };
820 auto insertFinding = std::find_if(labelNames.begin(), labelNames.end(), predicate);
821
822 groupItem->m_childItems.insert(groupItem->m_childItems.begin() + std::distance(labelNames.begin(), insertFinding), labelItem);
823 }
824
825 auto instanceItem = new QmitkMultiLabelSegTreeItem(QmitkMultiLabelSegTreeItem::ItemType::Instance, labelItem, label);
826
827 auto predicate = [label](const QmitkMultiLabelSegTreeItem* item) { return item->GetLabelValue() > label->GetValue(); };
828 auto insertFinding = std::find_if(labelItem->m_childItems.begin(), labelItem->m_childItems.end(), predicate);
829 labelItem->m_childItems.insert(labelItem->m_childItems.begin() + std::distance(labelItem->m_childItems.begin(), insertFinding), instanceItem);
830
831 return instanceItem;
832}
833
834void QmitkMultiLabelTreeModel::GenerateInternalGroupTree(unsigned int groupID, QmitkMultiLabelSegTreeItem* groupItem)
835{

Callers 2

OnLabelAddedMethod · 0.85

Calls 7

GetNameMethod · 0.45
GetLabelMethod · 0.45
findMethod · 0.45
endMethod · 0.45
beginMethod · 0.45
GetLabelValueMethod · 0.45
GetValueMethod · 0.45

Tested by

no test coverage detected