summaryrefslogtreecommitdiff
path: root/test-code/cgaltest.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2010-04-12 00:16:36 (GMT)
committerMarius Kintel <marius@kintel.net>2010-10-31 00:42:35 (GMT)
commite8e213b3c9ce0580045ea6e7e86b00ab41d4c58b (patch)
treecb32e67b6334aa1f1dc62aa4a0686a22782e7f77 /test-code/cgaltest.cc
parent53a9953b7dc4ab4a366046c91529b32fb6652551 (diff)
Another refactoring session:
o mk_cache_id() obsoleted by removing the node index from the dump o node index output removed from each node and make optional in NodeDumper o The visitors are no longer global, but associated with a tree o Added Tree class to manage node trees and the (now implicit) dump cache o Moved PolySet cache into PolySetRenderer
Diffstat (limited to 'test-code/cgaltest.cc')
-rw-r--r--test-code/cgaltest.cc30
1 files changed, 25 insertions, 5 deletions
diff --git a/test-code/cgaltest.cc b/test-code/cgaltest.cc
index 8529da8..147e390 100644
--- a/test-code/cgaltest.cc
+++ b/test-code/cgaltest.cc
@@ -33,6 +33,7 @@
#include "nodedumper.h"
#include "CGALRenderer.h"
#include "PolySetCGALRenderer.h"
+#include "Tree.h"
#include <QApplication>
#include <QFile>
@@ -61,6 +62,24 @@ void handle_dep(QString filename)
}
}
+// FIXME: enforce some maximum cache size (old version had 100K vertices as limit)
+QHash<string, CGAL_Nef_polyhedron> cache;
+
+void cgalTree(Tree &tree)
+{
+ const AbstractNode *root = tree.root();
+ assert(root);
+ NodeCache<string> &cache = tree.cache();
+ NodeDumper dumper(cache, false);
+ Traverser trav(dumper, *root, Traverser::PRE_AND_POSTFIX);
+ trav.execute();
+ assert(!cache[*root].empty());
+
+ CSGTextRenderer renderer(csgcache, cache);
+ Traverser render(renderer, *root, Traverser::PRE_AND_POSTFIX);
+ render.execute();
+}
+
int main(int argc, char **argv)
{
if (argc != 2) {
@@ -146,11 +165,12 @@ int main(int argc, char **argv)
AbstractNode::resetIndexCounter();
root_node = root_module->evaluate(&root_ctx, &root_inst);
- NodeDumper dumper;
- Traverser trav(dumper, *root_node, Traverser::PRE_AND_POSTFIX);
- trav.execute();
- std::string dumpstdstr = dumper.getDump() + "\n";
- std::cout << dumpstdstr << "\n";
+ Tree tree;
+ tree.setRoot(root_node);
+
+ cgalTree(tree);
+
+ std::cout << cache[tree.cache()[*root_node]] << "\n";
CGALRenderer cgalrenderer(dumper.getCache());
PolySetCGALRenderer psrenderer(cgalrenderer);
contact: Jan Huwald // Impressum