Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
// $Header: /cvsroot/html2ps/tree.navigation.inc.php,v 1.13 2007/05/06 18:49:29 Konstantin Exp $
3
 
4
class TreeWalkerDepthFirst {
5
  var $_callback;
6
 
7
  function TreeWalkerDepthFirst($callback) {
8
    $this->_callback = $callback;
9
  }
10
 
11
  function run(&$node) {
12
    call_user_func($this->_callback, array('node' => &$node));
13
    $this->walk_element($node);
14
  }
15
 
16
  function walk_element(&$node) {
17
    if (!isset($node->content)) {
18
      return;
19
    };
20
 
21
    for ($i = 0, $size = count($node->content); $i < $size; $i++) {
22
      $child =& $node->content[$i];
23
      $this->run($child);
24
    };
25
  }
26
}
27
 
28
function &traverse_dom_tree_pdf(&$root) {
29
  switch ($root->node_type()) {
30
  case XML_DOCUMENT_NODE:
31
    $child =& $root->first_child();
32
    while($child) {
33
      $body =& traverse_dom_tree_pdf($child);
34
      if ($body) {
35
        return $body;
36
      }
37
      $child =& $child->next_sibling();
38
    };
39
 
40
    $null = null;
41
    return $null;
42
  case XML_ELEMENT_NODE:
43
    if (strtolower($root->tagname()) == "body") {
44
      return $root;
45
    }
46
 
47
    $child =& $root->first_child();
48
    while ($child) {
49
      $body =& traverse_dom_tree_pdf($child);
50
      if ($body) {
51
        return $body;
52
      }
53
      $child =& $child->next_sibling();
54
    };
55
 
56
    $null = null;
57
    return $null;
58
  default:
59
    $null = null;
60
    return $null;
61
  }
62
};
63
 
64
function dump_tree(&$box, $level) {
65
  print(str_repeat(" ", $level));
66
  if (is_a($box, 'TextBox')) {
67
    print(get_class($box).":".$box->uid.":".join('/', $box->words)."\n");
68
  } else {
69
    print(get_class($box).":".$box->uid."\n");
70
  };
71
 
72
  if (isset($box->content)) {
73
    for ($i=0; $i<count($box->content); $i++) {
74
      dump_tree($box->content[$i], $level+1);
75
    };
76
  };
77
};
78
 
79
?>