node_tree.c.svn-base

来自「SumatraPDF是一款小型开源的pdf阅读工具。虽然玲珑小巧(只有800多K」· SVN-BASE 代码 · 共 109 行

SVN-BASE
109
字号
#include "fitz-base.h"#include "fitz-world.h"fz_error *fz_newtree(fz_tree **treep){	fz_tree *tree;	tree = *treep = fz_malloc(sizeof (fz_tree));	if (!tree)		return fz_outofmem;	tree->refs = 1;	tree->root = nil;	tree->head = nil;	return fz_okay;}fz_tree *fz_keeptree(fz_tree *tree){	tree->refs ++;	return tree;}voidfz_droptree(fz_tree *tree){	if (--tree->refs == 0)	{		if (tree->root)			fz_dropnode(tree->root);		fz_free(tree);	}}fz_rectfz_boundtree(fz_tree *tree, fz_matrix ctm){	if (tree->root)		return fz_boundnode(tree->root, ctm);	return fz_emptyrect;}voidfz_insertnodefirst(fz_node *parent, fz_node *child){	child->parent = parent;	child->next = parent->first;	parent->first = child;	if (!parent->last)		parent->last = child;}voidfz_insertnodelast(fz_node *parent, fz_node *child){	child->parent = parent;	if (!parent->first)		parent->first = child;	else		parent->last->next = child;	parent->last = child;}voidfz_insertnodeafter(fz_node *prev, fz_node *child){	fz_node *parent = prev->parent;	child->parent = parent;	if (parent->last == prev)		parent->last = child;	child->next = prev->next;	prev->next = child;}voidfz_removenode(fz_node *child){	fz_node *parent = child->parent;	fz_node *prev;	fz_node *node;	if (parent->first == child)	{		parent->first = child->next;		if (parent->last == child)			parent->last = nil;		return;	}	prev = parent->first;	node = prev->next;	while (node)	{		if (node == child)		{			prev->next = child->next;		}		prev = node;		node = node->next;	}	parent->last = prev;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?