diff options
author | Marius Kintel <marius@kintel.net> | 2010-04-12 00:16:36 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2010-10-31 00:42:35 (GMT) |
commit | e8e213b3c9ce0580045ea6e7e86b00ab41d4c58b (patch) | |
tree | cb32e67b6334aa1f1dc62aa4a0686a22782e7f77 /src/PolySetRenderer.h | |
parent | 53a9953b7dc4ab4a366046c91529b32fb6652551 (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.h | 25 |
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; }; |