summaryrefslogtreecommitdiff
path: root/src/PolySetEvaluator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/PolySetEvaluator.h')
-rw-r--r--src/PolySetEvaluator.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/PolySetEvaluator.h b/src/PolySetEvaluator.h
new file mode 100644
index 0000000..dcc67db
--- /dev/null
+++ b/src/PolySetEvaluator.h
@@ -0,0 +1,39 @@
+#ifndef POLYSETEVALUATOR_H_
+#define POLYSETEVALUATOR_H_
+
+#include "myqhash.h"
+#include "node.h"
+#include <QCache>
+
+class PolySetEvaluator
+{
+public:
+ enum EvaluateMode { EVALUATE_CGAL, EVALUATE_OPENCSG };
+ PolySetEvaluator() : cache(100) {}
+
+ virtual ~PolySetEvaluator() {}
+
+ virtual PolySet *evaluatePolySet(const class ProjectionNode &, AbstractPolyNode::render_mode_e) = 0;
+ virtual PolySet *evaluatePolySet(const class DxfLinearExtrudeNode &, AbstractPolyNode::render_mode_e) = 0;
+ virtual PolySet *evaluatePolySet(const class DxfRotateExtrudeNode &, AbstractPolyNode::render_mode_e) = 0;
+
+ void clearCache() {
+ this->cache.clear();
+ }
+
+protected:
+
+ struct cache_entry {
+ class PolySet *ps;
+ QString msg;
+ cache_entry(PolySet *ps);
+ ~cache_entry();
+ };
+
+ QCache<std::string, cache_entry> cache;
+
+private:
+ static PolySetEvaluator *global_evaluator;
+};
+
+#endif
contact: Jan Huwald // Impressum