summaryrefslogtreecommitdiff
path: root/src/PolySetCGALRenderer.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 /src/PolySetCGALRenderer.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 'src/PolySetCGALRenderer.cc')
-rw-r--r--src/PolySetCGALRenderer.cc15
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;
}
contact: Jan Huwald // Impressum