diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-21 12:43:52 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-21 12:43:52 (GMT) |
commit | 1f08d77f548ed12186523e8e47f62441730ef985 (patch) | |
tree | b9190fb4773899404c7f51692a9478ab06914aef /module.cc | |
parent | e24a87b8a37b8f71be30d99251908a5d80bb8bc7 (diff) |
Clifford Wolf:
CSG Evaluation now functional
git-svn-id: http://svn.clifford.at/openscad/trunk@7 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'module.cc')
-rw-r--r-- | module.cc | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -191,6 +191,7 @@ CGAL_Nef_polyhedron AbstractNode::render_cgal_nef_polyhedron() const CGAL_Nef_polyhedron N; foreach (AbstractNode *v, children) N += v->render_cgal_nef_polyhedron(); + progress_report(); return N; } @@ -202,3 +203,35 @@ QString AbstractNode::dump(QString indent) const return text + indent + "}\n"; } +int progress_report_count; +void (*progress_report_f)(const class AbstractNode*, void*, int); +void *progress_report_vp; + +void AbstractNode::progress_prepare() +{ + foreach (AbstractNode *v, children) + v->progress_prepare(); + progress_mark = ++progress_report_count; +} + +void AbstractNode::progress_report() const +{ + if (progress_report_f) + progress_report_f(this, progress_report_vp, progress_mark); +} + +void progress_report_prep(AbstractNode *root, void (*f)(const class AbstractNode *node, void *vp, int mark), void *vp) +{ + progress_report_count = 0; + progress_report_f = f; + progress_report_vp = vp; + root->progress_prepare(); +} + +void progress_report_fin() +{ + progress_report_count = 0; + progress_report_f = NULL; + progress_report_vp = NULL; +} + |