summaryrefslogtreecommitdiff
path: root/src/progress.cc
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-09 13:48:09 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-09 13:48:09 (GMT)
commitc7b9a49c15f10ee76258f735ff66c1ed32e64c51 (patch)
treeebc9ef37dc44c0eed9c144441f5f763c381fdb08 /src/progress.cc
parent66ac9239767dd2151e61a11bc3fb9605c2a4d917 (diff)
Cleaned up progress handling, implemented cancel function. Needs more testing
git-svn-id: http://svn.clifford.at/openscad/trunk@420 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'src/progress.cc')
-rw-r--r--src/progress.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/progress.cc b/src/progress.cc
new file mode 100644
index 0000000..300147d
--- /dev/null
+++ b/src/progress.cc
@@ -0,0 +1,28 @@
+#include "progress.h"
+#include "node.h"
+
+int progress_report_count;
+void (*progress_report_f)(const class AbstractNode*, void*, int);
+void *progress_report_userdata;
+
+void progress_report_prep(AbstractNode *root, void (*f)(const class AbstractNode *node, void *userdata, int mark), void *userdata)
+{
+ progress_report_count = 0;
+ progress_report_f = f;
+ progress_report_userdata = userdata;
+ root->progress_prepare();
+}
+
+void progress_report_fin()
+{
+ progress_report_count = 0;
+ progress_report_f = NULL;
+ progress_report_userdata = NULL;
+}
+
+void progress_update(const AbstractNode *node, int mark)
+{
+ if (progress_report_f)
+ progress_report_f(node, progress_report_userdata, mark);
+}
+
contact: Jan Huwald // Impressum