1<?php
2// $Header: /cvsroot/html2ps/box.input.text.php,v 1.28 2007/01/03 19:39:29 Konstantin Exp $
3
4/// define('SIZE_SPACE_KOEFF',1.65); (defined in tag.input.inc.php)
5
6class TextInputBox extends InlineControlBox {
7  /**
8   * @var String contains the default value of this text field
9   * @access private
10   */
11  var $_value;
12
13  function TextInputBox($value, $name) {
14    $this->InlineControlBox();
15
16    $this->_value = $value;
17    $this->_field_name = $name;
18  }
19
20  function &create(&$root, &$pipeline) {
21    // Text to be displayed
22    if ($root->has_attribute('value')) {
23      $text = trim($root->get_attribute('value'));
24    } else {
25      $text = '';
26    };
27
28    /**
29     * Input field name
30     */
31    $name = $root->get_attribute('name');
32
33    $box =& new TextInputBox($root->get_attribute("value"), $name);
34    $box->readCSS($pipeline->get_current_css_state());
35    $box->setup_content($text, $pipeline);
36
37    return $box;
38  }
39
40  function get_height() {
41    $normal_height = parent::get_height();
42
43    $hc = $this->get_height_constraint();
44    if ($hc->is_null()) {
45      return $normal_height;
46    } else {
47      return $normal_height - $this->_get_vert_extra();
48    };
49  }
50
51  function show(&$driver) {
52    // Now set the baseline of a button box to align it vertically when flowing isude the
53    // text line
54
55    $this->default_baseline = $this->content[0]->baseline + $this->get_extra_top();
56    $this->baseline         = $this->content[0]->baseline + $this->get_extra_top();
57
58    /**
59     * If we're rendering the interactive form, the field content should not be rendered
60     */
61    global $g_config;
62    if ($g_config['renderforms']) {
63      /**
64       * Render background/borders only
65       */
66      $status = GenericFormattedBox::show($driver);
67
68      /**
69       * @todo encoding name?
70       * @todo font name?
71       * @todo check if font is embedded for PDFLIB
72       */
73      $driver->field_text($this->get_left_padding(),
74                          $this->get_top_padding(),
75                          $this->get_width()  + $this->get_padding_left() + $this->get_padding_right(),
76                          $this->get_height(),
77                          $this->_value,
78                          $this->_field_name);
79    } else {
80      /**
81       * Render everything, including content
82       */
83      $status = GenericContainerBox::show($driver);
84    }
85
86    return $status;
87  }
88}
89?>