diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-10-05 07:23:36 +0200 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-10-05 07:23:36 +0200 |
commit | 7ad0eac4b8c81c5123ef5a62b23ba2895dd997c8 (patch) | |
tree | 09d5530e86be7e7b9da37dff2668e31d18a78fb5 /tree/tree.c | |
parent | 00905a4e2b959ccc3b79381acbf1d3b8e5319e8e (diff) | |
download | mupdf-7ad0eac4b8c81c5123ef5a62b23ba2895dd997c8.tar.xz |
refactor and rename node types
Diffstat (limited to 'tree/tree.c')
-rw-r--r-- | tree/tree.c | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/tree/tree.c b/tree/tree.c index 1a96ec38..7de88e11 100644 --- a/tree/tree.c +++ b/tree/tree.c @@ -9,18 +9,31 @@ fz_newtree(fz_tree **treep) if (!tree) return fz_outofmem; + tree->refcount = 1; tree->root = nil; tree->head = nil; return nil; } +fz_tree * +fz_keeptree(fz_tree *tree) +{ + tree->refcount ++; + return tree; +} + void -fz_freetree(fz_tree *tree) +fz_droptree(fz_tree *tree) { - if (tree->root) - fz_freenode(tree->root); - fz_free(tree); + tree->refcount --; + + if (tree->refcount == 0) + { + if (tree->root) + fz_freenode(tree->root); + fz_free(tree); + } } fz_rect @@ -32,32 +45,16 @@ fz_boundtree(fz_tree *tree, fz_matrix ctm) } void -fz_insertnode(fz_node *node, fz_node *child) +fz_insertnode(fz_node *parent, fz_node *child) { - child->parent = node; - - if (fz_isover(node)) - { - child->next = ((fz_over*)node)->child; - ((fz_over*)node)->child = child; - } - - if (fz_ismask(node)) - { - child->next = ((fz_mask*)node)->child; - ((fz_mask*)node)->child = child; - } - - if (fz_isblend(node)) - { - child->next = ((fz_blend*)node)->child; - ((fz_blend*)node)->child = child; - } - - if (fz_istransform(node)) - { - child->next = ((fz_transform*)node)->child; - ((fz_transform*)node)->child = child; - } + assert(fz_istransformnode(parent) || + fz_isovernode(parent) || + fz_ismasknode(parent) || + fz_isblendnode(parent) || + fz_ismetanode(parent)); + + child->parent = parent; + child->next = parent->child; + parent->child = child; } |