summaryrefslogtreecommitdiff
path: root/tests/cgalpngtest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cgalpngtest.cc')
-rw-r--r--tests/cgalpngtest.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/tests/cgalpngtest.cc b/tests/cgalpngtest.cc
index 31bbbe1..8e3859b 100644
--- a/tests/cgalpngtest.cc
+++ b/tests/cgalpngtest.cc
@@ -71,6 +71,15 @@ void cgalTree(Tree &tree)
evaluate.execute();
}
+AbstractNode *find_root_tag(AbstractNode *n)
+{
+ foreach(AbstractNode *v, n->children) {
+ if (v->modinst->tag_root) return v;
+ if (AbstractNode *vroot = find_root_tag(v)) return vroot;
+ }
+ return NULL;
+}
+
struct CsgInfo
{
OffscreenView *glview;
@@ -131,7 +140,6 @@ int main(int argc, char **argv)
AbstractModule *root_module;
ModuleInstantiation root_inst;
- AbstractNode *root_node;
QFileInfo fileInfo(filename);
handle_dep(filename);
@@ -158,7 +166,10 @@ int main(int argc, char **argv)
QDir::setCurrent(fileInfo.absolutePath());
AbstractNode::resetIndexCounter();
- root_node = root_module->evaluate(&root_ctx, &root_inst);
+ AbstractNode *absolute_root_node = root_module->evaluate(&root_ctx, &root_inst);
+ AbstractNode *root_node;
+ // Do we have an explicit root node (! modifier)?
+ if (!(root_node = find_root_tag(absolute_root_node))) root_node = absolute_root_node;
Tree tree(root_node);
contact: Jan Huwald // Impressum