isNull()) { return $wc2; }; if ($wc1->isConstant() && !$wc2->isNull()) { return $wc2; }; if ($wc1->isFraction() && $wc2->isFraction()) { return $wc2; }; return $wc1; } // the second parameter of 'apply' method may be null; it means that // parent have 'fit' width and depends on the current constraint itself class WCNone extends WidthConstraint { function WCNone() { $this->WidthConstraint(); } function applicable(&$box) { return false; } function _apply($w, $pw) { return $w; } function apply_inverse($w, $pw) { return $pw; } function &_copy() { $copy =& new WCNone(); return $copy; } function _units2pt($base) { } function isNull() { return true; } } class WCConstant extends WidthConstraint { var $width; function WCConstant($width) { $this->WidthConstraint(); $this->width = $width; } function applicable(&$box) { return true; } function _apply($w, $pw) { return $this->width; } function apply_inverse($w, $pw) { return $pw; } function &_copy() { $copy =& new WCConstant($this->width); return $copy; } function _units2pt($base) { $this->width = units2pt($this->width, $base); } function isConstant() { return true; } } class WCFraction extends WidthConstraint { var $fraction; function applicable(&$box) { if (is_null($box->parent)) { return false; }; $parent_wc = $box->parent->get_css_property(CSS_WIDTH); return $box->isCell() || $parent_wc->applicable($box->parent); } function WCFraction($fraction) { $this->WidthConstraint(); $this->fraction = $fraction; } function _apply($w, $pw) { if (!is_null($pw)) { return $pw * $this->fraction; } else { return $w; }; } function apply_inverse($w, $pw) { if ($this->fraction > 0) { return $w / $this->fraction; } else { return 0; }; } function &_copy() { $copy =& new WCFraction($this->fraction); return $copy; } function _units2pt($base) { } function isFraction() { return true; } } ?>