Sat, 08 Mar 2003 06:52:09 +0000
add linked list of name trees to struct pdf_file, and finalize all name trees when PDF file is closed.
pdf.c | file | annotate | diff | revisions | |
pdf_name_tree.c | file | annotate | diff | revisions | |
pdf_name_tree.h | file | annotate | diff | revisions | |
pdf_private.h | file | annotate | diff | revisions |
1.1 diff -r a54eb7b9fc15 -r dcfd1d4b5c24 pdf.c 1.2 --- a/pdf.c Fri Mar 07 11:35:36 2003 +0000 1.3 +++ b/pdf.c Sat Mar 08 06:52:09 2003 +0000 1.4 @@ -4,7 +4,7 @@ 1.5 * will be compressed using ITU-T T.6 (G4) fax encoding. 1.6 * 1.7 * PDF routines 1.8 - * $Id: pdf.c,v 1.5 2003/03/04 18:09:49 eric Exp $ 1.9 + * $Id: pdf.c,v 1.6 2003/03/07 22:52:09 eric Exp $ 1.10 * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com> 1.11 * 1.12 * This program is free software; you can redistribute it and/or modify 1.13 @@ -35,6 +35,7 @@ 1.14 #include "pdf_util.h" 1.15 #include "pdf_prim.h" 1.16 #include "pdf_private.h" 1.17 +#include "pdf_name_tree.h" 1.18 1.19 1.20 static void pdf_set_info (pdf_file_handle pdf_file, char *key, char *val) 1.21 @@ -113,6 +114,9 @@ 1.22 1.23 void pdf_close (pdf_file_handle pdf_file) 1.24 { 1.25 + /* finalize all data structures */ 1.26 + pdf_finalize_name_trees (pdf_file); 1.27 + 1.28 /* write body */ 1.29 pdf_write_all_ind_obj (pdf_file); 1.30
2.1 diff -r a54eb7b9fc15 -r dcfd1d4b5c24 pdf_name_tree.c 2.2 --- a/pdf_name_tree.c Fri Mar 07 11:35:36 2003 +0000 2.3 +++ b/pdf_name_tree.c Sat Mar 08 06:52:09 2003 +0000 2.4 @@ -4,7 +4,7 @@ 2.5 * will be compressed using ITU-T T.6 (G4) fax encoding. 2.6 * 2.7 * PDF routines 2.8 - * $Id: pdf_name_tree.c,v 1.3 2003/03/07 03:35:36 eric Exp $ 2.9 + * $Id: pdf_name_tree.c,v 1.4 2003/03/07 22:52:09 eric Exp $ 2.10 * Copyright 2003 Eric Smith <eric@brouhaha.com> 2.11 * 2.12 * This program is free software; you can redistribute it and/or modify 2.13 @@ -80,6 +80,9 @@ 2.14 root->parent = NULL; 2.15 root->leaf = 1; 2.16 2.17 + tree->next = pdf_file->name_tree_list; 2.18 + pdf_file->name_tree_list = tree; 2.19 + 2.20 return (tree); 2.21 } 2.22 2.23 @@ -248,7 +251,10 @@ 2.24 } 2.25 2.26 2.27 -void pdf_finalize_name_tree (struct pdf_name_tree *tree) 2.28 +void pdf_finalize_name_trees (pdf_file_handle pdf_file) 2.29 { 2.30 - pdf_finalize_name_tree_node (tree, tree->root); 2.31 + struct pdf_name_tree *tree; 2.32 + 2.33 + for (tree = pdf_file->name_tree_list; tree; tree = tree->next) 2.34 + pdf_finalize_name_tree_node (tree, tree->root); 2.35 }
3.1 diff -r a54eb7b9fc15 -r dcfd1d4b5c24 pdf_name_tree.h 3.2 --- a/pdf_name_tree.h Fri Mar 07 11:35:36 2003 +0000 3.3 +++ b/pdf_name_tree.h Sat Mar 08 06:52:09 2003 +0000 3.4 @@ -4,7 +4,7 @@ 3.5 * will be compressed using ITU-T T.6 (G4) fax encoding. 3.6 * 3.7 * PDF routines 3.8 - * $Id: pdf_name_tree.h,v 1.1 2003/03/07 02:16:08 eric Exp $ 3.9 + * $Id: pdf_name_tree.h,v 1.2 2003/03/07 22:52:09 eric Exp $ 3.10 * Copyright 2003 Eric Smith <eric@brouhaha.com> 3.11 * 3.12 * This program is free software; you can redistribute it and/or modify 3.13 @@ -26,9 +26,10 @@ 3.14 3.15 struct pdf_name_tree 3.16 { 3.17 - pdf_file_handle pdf_file; 3.18 - bool number_tree; /* false for name tree, 3.19 - true for number tree */ 3.20 + pdf_file_handle pdf_file; 3.21 + struct pdf_name_tree *next; /* chain all name trees in the PDF file */ 3.22 + bool number_tree; /* false for name tree, 3.23 + true for number tree */ 3.24 struct pdf_name_tree_node *root; 3.25 }; 3.26 3.27 @@ -47,4 +48,4 @@ 3.28 struct pdf_obj *val); 3.29 3.30 3.31 -void pdf_finalize_name_tree (struct pdf_name_tree *tree); 3.32 +void pdf_finalize_name_trees (pdf_file_handle pdf_file);
4.1 diff -r a54eb7b9fc15 -r dcfd1d4b5c24 pdf_private.h 4.2 --- a/pdf_private.h Fri Mar 07 11:35:36 2003 +0000 4.3 +++ b/pdf_private.h Sat Mar 08 06:52:09 2003 +0000 4.4 @@ -4,7 +4,7 @@ 4.5 * will be compressed using ITU-T T.6 (G4) fax encoding. 4.6 * 4.7 * PDF routines 4.8 - * $Id: pdf_private.h,v 1.5 2003/03/05 12:56:25 eric Exp $ 4.9 + * $Id: pdf_private.h,v 1.6 2003/03/07 22:52:09 eric Exp $ 4.10 * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com> 4.11 * 4.12 * This program is free software; you can redistribute it and/or modify 4.13 @@ -47,13 +47,14 @@ 4.14 4.15 struct pdf_file 4.16 { 4.17 - FILE *f; 4.18 - struct pdf_obj *first_ind_obj; 4.19 - struct pdf_obj *last_ind_obj; 4.20 - long int xref_offset; 4.21 - struct pdf_obj *catalog; 4.22 - struct pdf_obj *info; 4.23 - struct pdf_pages *root; 4.24 - struct pdf_bookmark *outline_root; 4.25 - struct pdf_obj *trailer_dict; 4.26 + FILE *f; 4.27 + struct pdf_obj *first_ind_obj; 4.28 + struct pdf_obj *last_ind_obj; 4.29 + long int xref_offset; 4.30 + struct pdf_obj *catalog; 4.31 + struct pdf_obj *info; 4.32 + struct pdf_pages *root; 4.33 + struct pdf_bookmark *outline_root; 4.34 + struct pdf_obj *trailer_dict; 4.35 + struct pdf_name_tree *name_tree_list; 4.36 };