summaryrefslogtreecommitdiff
path: root/src/PolySetRenderer.h
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 /src/PolySetRenderer.h
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 'src/PolySetRenderer.h')
-rw-r--r--src/PolySetRenderer.h25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/PolySetRenderer.h b/src/PolySetRenderer.h
index cff528f..ddd692f 100644
--- a/src/PolySetRenderer.h
+++ b/src/PolySetRenderer.h
@@ -2,20 +2,37 @@
#define POLYSETRENDERER_H_
#include "node.h"
+#include <QCache>
class PolySetRenderer
{
public:
enum RenderMode { RENDER_CGAL, RENDER_OPENCSG };
- PolySetRenderer() {}
+ PolySetRenderer() : cache(100) {}
+
virtual ~PolySetRenderer() {}
- virtual PolySet *renderPolySet(const class ProjectionNode &node, AbstractPolyNode::render_mode_e) = 0;
- virtual PolySet *renderPolySet(const class DxfLinearExtrudeNode &node, AbstractPolyNode::render_mode_e) = 0;
- virtual PolySet *renderPolySet(const class DxfRotateExtrudeNode &node, AbstractPolyNode::render_mode_e) = 0;
+ virtual PolySet *renderPolySet(const class ProjectionNode &, AbstractPolyNode::render_mode_e) = 0;
+ virtual PolySet *renderPolySet(const class DxfLinearExtrudeNode &, AbstractPolyNode::render_mode_e) = 0;
+ virtual PolySet *renderPolySet(const class DxfRotateExtrudeNode &, AbstractPolyNode::render_mode_e) = 0;
+
+ void clearCache() {
+ this->cache.clear();
+ }
static PolySetRenderer *renderer() { return global_renderer; }
static void setRenderer(PolySetRenderer *r) { global_renderer = r; }
+protected:
+
+ struct cache_entry {
+ class PolySet *ps;
+ QString msg;
+ cache_entry(PolySet *ps);
+ ~cache_entry();
+ };
+
+ QCache<QString, cache_entry> cache;
+
private:
static PolySetRenderer *global_renderer;
};
contact: Jan Huwald // Impressum