blob: 14d982322baa9f3673d6b532f3aa5c1ded7ca1ce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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;
}
|