summaryrefslogtreecommitdiff
path: root/tree/optimize.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2004-11-24 06:42:52 +0100
committerTor Andersson <tor@ghostscript.com>2004-11-24 06:42:52 +0100
commit4b2218b903da6de40e8a82b9e2a69157d415637c (patch)
treeca489110e7ee0dad118a8c13244ec3f8ab31492a /tree/optimize.c
parentb48de7618e25bc2cef9d9db4f9b49e1d546e438a (diff)
downloadmupdf-4b2218b903da6de40e8a82b9e2a69157d415637c.tar.xz
added shade code skeleton
Diffstat (limited to 'tree/optimize.c')
-rw-r--r--tree/optimize.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/tree/optimize.c b/tree/optimize.c
new file mode 100644
index 00000000..14d98232
--- /dev/null
+++ b/tree/optimize.c
@@ -0,0 +1,56 @@
+#include <fitz.h>
+
+/*
+ * Remove useless overs that only have one child.
+ */
+
+static void cleanovers(fz_node *node)
+{
+ fz_node *prev;
+ fz_node *over;
+ fz_node *child;
+
+ prev = nil;
+ for (over = node->first; over; over = prev->next)
+ {
+ cleanovers(over);
+
+ if (fz_isovernode(over))
+ {
+ if (over->first == over->last)
+ {
+ printf(" remove unused over node\n");
+ child = over->first;
+ fz_removenode(over);
+ if (child)
+ {
+ if (prev)
+ fz_insertnodeafter(prev, child);
+ else
+ fz_insertnodefirst(node, child);
+ }
+ over = nil;
+ }
+ }
+
+ if (over)
+ prev = over;
+ }
+}
+
+fz_error *
+fz_optimizetree(fz_tree *tree)
+{
+ printf("optimizing tree\n");
+
+//printf("before:\n");
+//fz_debugtree(tree);
+
+ cleanovers(tree->root);
+
+//printf("after:\n");
+//fz_debugtree(tree);
+
+ return nil;
+}
+