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/PolySetCGALRenderer.cc | |
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/PolySetCGALRenderer.cc')
-rw-r--r-- | src/PolySetCGALRenderer.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/PolySetCGALRenderer.cc b/src/PolySetCGALRenderer.cc index acd03eb..38cc1cc 100644 --- a/src/PolySetCGALRenderer.cc +++ b/src/PolySetCGALRenderer.cc @@ -14,6 +14,10 @@ PolySet *PolySetCGALRenderer::renderPolySet(const ProjectionNode &node, AbstractPolyNode::render_mode_e) { + // FIXME: create cacheid from node + QString cacheid; + if (this->cache.contains(cacheid)) return this->cache[cacheid]->ps->link(); + CGAL_Nef_polyhedron N = this->cgalrenderer.renderCGALMesh(node); PolySet *ps = new PolySet(); @@ -155,6 +159,7 @@ PolySet *PolySetCGALRenderer::renderPolySet(const ProjectionNode &node, Abstract cant_project_non_simple_polyhedron: + this->cache.insert(cacheid, new cache_entry(ps->link())); return ps; } @@ -232,6 +237,10 @@ static void add_slice(PolySet *ps, DxfData::Path *pt, double rot1, double rot2, PolySet *PolySetCGALRenderer::renderPolySet(const DxfLinearExtrudeNode &node, AbstractPolyNode::render_mode_e) { + // FIXME: create cacheid from node + QString cacheid; + if (this->cache.contains(cacheid)) return this->cache[cacheid]->ps->link(); + DxfData *dxf; if (node.filename.isEmpty()) @@ -305,11 +314,16 @@ PolySet *PolySetCGALRenderer::renderPolySet(const DxfLinearExtrudeNode &node, Ab delete dxf; + this->cache.insert(cacheid, new cache_entry(ps->link())); return ps; } PolySet *PolySetCGALRenderer::renderPolySet(const DxfRotateExtrudeNode &node, AbstractPolyNode::render_mode_e) { + // FIXME: create cacheid from node + QString cacheid; + if (this->cache.contains(cacheid)) return this->cache[cacheid]->ps->link(); + DxfData *dxf; if (node.filename.isEmpty()) @@ -380,5 +394,6 @@ PolySet *PolySetCGALRenderer::renderPolySet(const DxfRotateExtrudeNode &node, Ab delete dxf; + this->cache.insert(cacheid, new cache_entry(ps->link())); return ps; } |