没有时间整理,随便扒一扒,作为编码参考
- mitk::NodePredicateSource
判断给定的node(new中给定的)是否是某个node的子孙/非子孙source node。
示例:
//事先定义的几个node
mitk::DataStorage::Pointer myDataStorage(mitk::StandaloneDataStorage::New().GetPointer());
mitk::DataNode::Pointer godfather, grandMother, mother, daughter;
godfather = mitk::DataNode::New();
grandMother = mitk::DataNode::New();
mother = mitk::DataNode::New();
daughter = mitk::DataNode::New();
//指定node之间的关系
myDataStorage->Add(godfather);
myDataStorage->Add(grandMother);
myDataStorage->Add(mother, grandMother);
myDataStorage->Add(daughter, mother);
//下面对这些关系进行验证。构造器中的false表示只验证是否为亲生
mitk::NodePredicateSource::Pointer testPredicate = mitk::NodePredicateSource::New(grandMother, false, myDataStorage);
//验证示例,返回值为bool类型,即是或不是
testPredicate->CheckNode(mother);//gradmother is direct source of mother, return true
testPredicate->CheckNode(godfather)//return false
testPredicate->CheckNode(daughter)// Node is derivative but only direct derivatives are wanted
//构造器参数True。亲生或非亲生都符合条件,只要是grandmother的子node都行。
testPredicate = NULL;
testPredicate = mitk::NodePredicateSource::New(grandMother, true, myDataStorage);
testPredicate->CheckNode(daughter)// 返回真,daughter虽非直接子女,但只要是后代就符合条件
testPredicate->CheckNode(grandMother)//返回假,自己不是自己的子孙
- mitk::NodePredicateProperty
验证给定的DataNode是否具有某个属性。如果第二个参数为NULL,将只检查是否存在一个给定名字的属性。如果第三个参数里指定renderer,则将验证renderer-specific,也就是与renderer有关的属性。具体参数参见该类构造器。
mitk::NodePredicateProperty p("color",
mitk::ColorProperty::New(color));
SetOfObjects::ConstPointer rs = ds->GetSubset(p);
mitk::NodePredicateAnd
将其子断言用逻辑与连接起来。mitk::NodePredicateNot
mitk::NodePredicateOr
将其子断言用逻辑或连接起来
mitk::NodePredicateOR pOR(p1, p2);
mitk::NodePredicateData
验证给定的DataNode data object 指针是否等于给定的指针。
NodePredicateData(NULL) 返回真,如果DataNode 没有data object(->GetData()返回NULL)。这可能返回随机的nodes数量mitk::NodePredicateDataType
验证给定DataNodes data object是否为指定的数据类型。
mitk::NodePredicateDataType predicate("Image");//or "Surface"
SetOfObjects::ConstPointer rs = ds->GetSubset(predicate);
//示例
mitk::NodePredicateDataType p1("Image");
mitk::NodePredicateProperty p2("color", new ColorProperty(color));
mitk::NodePredicateOR pOR(p1, p2);
mitk::NodePredicateDataType p4("Surface");
mitk::NodePredicateNOT pNOT(p4);
mitk::NodePredicateAND pAND(pOR, pNOT);
SetOfObjects::ConstPointer rs = ds->GetSubset(pAND);
/* retrieve source & derived objects */
SetOfObjects::ConstPointer sources = ds->GetSources(n3); // == n1
SetOfObjects::ConstPointer child = ds->GetDerivations(n1); // == n3
/* retrieve source & derived objects with specific criteria */
mitk::NodePredicateDataType p("Image");
SetOfObjects::ConstPointer sources = ds->GetSources(n3, &p); // == n1
SetOfObjects::ConstPointer child = ds->GetDerivations(n1, &p);
GetSources(const mitk::DataTreeNode* node, const NodePredicateBase*
condition = NULL, bool onlyDirectSources = true)//新的MITK中取消了DataTreeNode类
/* Retrieve single Nodes/objects */
mitk::NodePredicateDataType p("Image");
mitk::DataTreeNode* n = ds->GetNode(&p);
mitk::DataTreeNode* n = ds->GetNamedNode("MyNode");
mitk::Image* image = ds->GetNamedObject<mitk::Image>("data");