Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
 
3
require_once(HTML2PS_DIR.'width.constraint.php');
4
 
5
function merge_width_constraint($wc1, $wc2) {
6
  if ($wc1->isNull()) {
7
    return $wc2;
8
  };
9
 
10
  if ($wc1->isConstant() && !$wc2->isNull()) {
11
    return $wc2;
12
  };
13
 
14
  if ($wc1->isFraction() && $wc2->isFraction()) {
15
    return $wc2;
16
  };
17
 
18
  return $wc1;
19
}
20
 
21
// the second parameter of 'apply' method may be null; it means that
22
// parent have 'fit' width and depends on the current constraint itself
23
 
24
class WCNone extends WidthConstraint {
25
  function WCNone() {
26
    $this->WidthConstraint();
27
  }
28
 
29
  function applicable(&$box) { return false; }
30
 
31
  function _apply($w, $pw) { return $w; }
32
  function apply_inverse($w, $pw) { return $pw; }
33
 
34
  function &_copy() {
35
    $copy =& new WCNone();
36
    return $copy;
37
  }
38
 
39
  function _units2pt($base) {
40
  }
41
 
42
  function isNull() { return true; }
43
}
44
 
45
class WCConstant extends WidthConstraint {
46
  var $width;
47
 
48
  function WCConstant($width) {
49
    $this->WidthConstraint();
50
    $this->width = $width;
51
  }
52
 
53
  function applicable(&$box) {
54
    return true;
55
  }
56
 
57
  function _apply($w, $pw) {
58
    return $this->width;
59
  }
60
 
61
  function apply_inverse($w, $pw) {
62
    return $pw;
63
  }
64
 
65
  function &_copy() {
66
    $copy =& new WCConstant($this->width);
67
    return $copy;
68
  }
69
 
70
  function _units2pt($base) {
71
    $this->width = units2pt($this->width, $base);
72
  }
73
 
74
  function isConstant() {
75
    return true;
76
  }
77
}
78
 
79
class WCFraction extends WidthConstraint {
80
  var $fraction;
81
 
82
  function applicable(&$box) {
83
    if (is_null($box->parent)) { return false; };
84
    $parent_wc = $box->parent->get_css_property(CSS_WIDTH);
85
    return $box->isCell() || $parent_wc->applicable($box->parent);
86
  }
87
 
88
  function WCFraction($fraction) {
89
    $this->WidthConstraint();
90
    $this->fraction = $fraction;
91
  }
92
 
93
  function _apply($w, $pw) {
94
    if (!is_null($pw)) {
95
      return $pw * $this->fraction;
96
    } else {
97
      return $w;
98
    };
99
  }
100
 
101
  function apply_inverse($w, $pw) {
102
    if ($this->fraction > 0) { return $w / $this->fraction; } else { return 0; };
103
  }
104
 
105
  function &_copy() {
106
    $copy =& new WCFraction($this->fraction);
107
    return $copy;
108
  }
109
 
110
  function _units2pt($base) {
111
  }
112
 
113
  function isFraction() {
114
    return true;
115
  }
116
}
117
 
118
?>