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/config.parse.php,v 1.7 2007/05/07 13:28:39 Konstantin Exp $
3
 
4
require_once(HTML2PS_DIR.'font.resolver.class.php');
5
require_once(HTML2PS_DIR.'treebuilder.class.php');
6
require_once(HTML2PS_DIR.'media.layout.inc.php');
7
 
8
// Get list of media types being used by script;
9
// It should be a list of two types:
10
// 1. Current CSS media type chose by user (defaults to 'screen')
11
// 2. 'all' media type
12
//
13
function config_get_allowed_media() {
14
  return array($GLOBALS['g_config']['cssmedia'], 'all');
15
}
16
 
17
function parse_encoding_override_node_config_file($root, &$resolver) {
18
  $child = $root->first_child();
19
  do {
20
    if ($child->node_type() == XML_ELEMENT_NODE) {
21
      switch ($child->tagname()) {
22
      case "normal":
23
        if ($root->has_attribute('name')) {
24
          $names = explode(',', $root->get_attribute('name'));
25
          foreach ($names as $name) {
26
            $resolver->add_normal_encoding_override($name,
27
                                                    $child->get_attribute('normal'),
28
                                                    $child->get_attribute('italic'),
29
                                                    $child->get_attribute('oblique'));
30
          };
31
        };
32
 
33
        if ($root->has_attribute('mask')) {
34
          foreach ($names as $name) {
35
            $resolver->add_normal_encoding_override_mask($root->get_attribute('mask'),
36
                                                         $child->get_attribute('normal'),
37
                                                         $child->get_attribute('italic'),
38
                                                         $child->get_attribute('oblique'));
39
          };
40
        };
41
 
42
        break;
43
      case "bold":
44
        if ($root->has_attribute('name')) {
45
          $names = explode(',', $root->get_attribute('name'));
46
          foreach ($names as $name) {
47
            $resolver->add_bold_encoding_override($name,
48
                                                    $child->get_attribute('normal'),
49
                                                    $child->get_attribute('italic'),
50
                                                    $child->get_attribute('oblique'));
51
          };
52
        };
53
 
54
        if ($root->has_attribute('mask')) {
55
          foreach ($names as $name) {
56
            $resolver->add_bold_encoding_override_mask($root->get_attribute('mask'),
57
                                                       $child->get_attribute('normal'),
58
                                                       $child->get_attribute('italic'),
59
                                                       $child->get_attribute('oblique'));
60
          };
61
        };
62
 
63
        break;
64
      };
65
    };
66
  } while ($child = $child->next_sibling());
67
}
68
 
69
function parse_metrics_node_config_file($root, &$resolver) {
70
  $resolver->add_afm_mapping($root->get_attribute('typeface'),
71
                             $root->get_attribute('file'));
72
}
73
 
74
function parse_ttf_node_config_file($root, &$resolver) {
75
  switch (FONT_EMBEDDING_MODE) {
76
  case 'all':
77
    $embed_flag = true;
78
    break;
79
  case 'none':
80
    $embed_flag = false;
81
    break;
82
  case 'config':
83
    $embed_flag = (bool)$root->get_attribute('embed');
84
    break;
85
  }
86
 
87
  $resolver->add_ttf_mapping($root->get_attribute('typeface'),
88
                             $root->get_attribute('file'),
89
                             $embed_flag);
90
}
91
 
92
function parse_family_encoding_override_node_config_file($family, $root, &$resolver) {
93
  $child = $root->first_child();
94
  do {
95
    if ($child->node_type() == XML_ELEMENT_NODE) {
96
      switch ($child->tagname()) {
97
      case "normal":
98
        $names = explode(",",$root->get_attribute('name'));
99
        foreach ($names as $name) {
100
          $resolver->add_family_normal_encoding_override($family,
101
                                                         $name,
102
                                                         $child->get_attribute('normal'),
103
                                                         $child->get_attribute('italic'),
104
                                                         $child->get_attribute('oblique'));
105
        };
106
        break;
107
      case "bold":
108
        $names = explode(",",$root->get_attribute('name'));
109
        foreach ($names as $name) {
110
          $resolver->add_family_bold_encoding_override($family,
111
                                                       $name,
112
                                                       $child->get_attribute('normal'),
113
                                                       $child->get_attribute('italic'),
114
                                                       $child->get_attribute('oblique'));
115
        };
116
        break;
117
      };
118
    };
119
  } while ($child = $child->next_sibling());
120
}
121
 
122
function parse_fonts_family_node_config_file($root, &$resolver) {
123
  // Note: font family names are always converted to lower case to be non-case-sensitive
124
  $child = $root->first_child();
125
  do {
126
    if ($child->node_type() == XML_ELEMENT_NODE) {
127
      $font_family_name = strtolower($root->get_attribute('name'));
128
      switch ($child->tagname()) {
129
      case "normal":
130
        $resolver->add_normal_family($font_family_name,
131
                                     $child->get_attribute('normal'),
132
                                     $child->get_attribute('italic'),
133
                                     $child->get_attribute('oblique'));
134
        break;
135
      case "bold":
136
        $resolver->add_bold_family($font_family_name,
137
                                   $child->get_attribute('normal'),
138
                                   $child->get_attribute('italic'),
139
                                   $child->get_attribute('oblique'));
140
        break;
141
      case "encoding-override":
142
        parse_family_encoding_override_node_config_file($font_family_name, $child, $resolver);
143
        break;
144
      };
145
    };
146
  } while ($child = $child->next_sibling());
147
}
148
 
149
function parse_fonts_node_config_file($root, &$resolver) {
150
  $child = $root->first_child();
151
  do {
152
    if ($child->node_type() == XML_ELEMENT_NODE) {
153
      switch ($child->tagname()) {
154
      case "alias":
155
        $resolver->add_alias(strtolower($child->get_attribute('alias')), $child->get_attribute('family'));
156
        break;
157
      case "family":
158
        parse_fonts_family_node_config_file($child, $resolver);
159
        break;
160
      case "encoding-override":
161
        parse_encoding_override_node_config_file($child, $resolver);
162
        break;
163
      case "ttf":
164
        parse_ttf_node_config_file($child, $resolver);
165
        break;
166
      case "metrics":
167
        parse_metrics_node_config_file($child, $resolver);
168
        break;
169
      };
170
    };
171
  } while ($child = $child->next_sibling());
172
}
173
 
174
function parse_config_file($filename) {
175
  // Save old magic_quotes_runtime value and disable it
176
  $mq_runtime = get_magic_quotes_runtime();
177
  set_magic_quotes_runtime(0);
178
 
179
  $doc = TreeBuilder::build(file_get_contents($filename));
180
  $root=$doc->document_element();
181
 
182
  $child = $root->first_child();
183
  do {
184
    if ($child->node_type() == XML_ELEMENT_NODE) {
185
      switch ($child->tagname()) {
186
      case "fonts":
187
        global $g_font_resolver;
188
        parse_fonts_node_config_file($child, $g_font_resolver);
189
        break;
190
      case "fonts-pdf":
191
        global $g_font_resolver_pdf;
192
        parse_fonts_node_config_file($child, $g_font_resolver_pdf);
193
        break;
194
      case "media":
195
        add_predefined_media($child->get_attribute('name'),
196
                             (float)$child->get_attribute('height'),
197
                             (float)$child->get_attribute('width'));
198
        break;
199
      };
200
    };
201
  } while ($child = $child->next_sibling());
202
 
203
  // Restore old magic_quotes_runtime values
204
  set_magic_quotes_runtime($mq_runtime);
205
}
206
?>