node_tree.c
来自「SumatraPDF是一款小型开源的pdf阅读工具。虽然玲珑小巧(只有800多K」· C语言 代码 · 共 109 行
C
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 + -
显示快捷键?