Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpclass StrategyWidthMax {var $_limit;var $_maxw;var $_cmaxw;function StrategyWidthMax($limit = 10E6) {$this->_limit = $limit;}function add_width($delta) {if ($this->_cmaxw + $delta > $this->_limit) {$this->line_break();};$this->_cmaxw += $delta;}function line_break() {$this->_maxw = max($this->_maxw, $this->_cmaxw);$this->_cmaxw = 0;}function apply(&$box, &$context) {$this->_maxw = 0;// We need to add text indent to the max width$text_indent = $box->get_css_property(CSS_TEXT_INDENT);$this->_cmaxw = $text_indent->calculate($box);for ($i=0, $size = count($box->content); $i<$size; $i++) {$child =& $box->content[$i];if ($child->isLineBreak()) {$this->line_break();} elseif (!$child->out_of_flow()) {if (is_inline($child) ||$child->get_css_property(CSS_FLOAT) !== FLOAT_NONE) {$this->add_width($child->get_max_width($context, $this->_limit));} else {$this->line_break();$this->add_width($child->get_max_width($context, $this->_limit));// Process special case with percentage constrained table$item_wc = $child->get_css_property(CSS_WIDTH);if (is_a($child, "TableBox") &&is_a($item_wc, "WCFraction")) {$this->_cmaxw = max($this->_cmaxw,$item_wc->apply($box->get_width(),$box->parent->get_expandable_width()));};$this->line_break();};};}// Check if last line have maximal width//$this->line_break();// Note that max width cannot differ from constrained width,// if any width constraints apply//$wc = $box->get_css_property(CSS_WIDTH);if ($wc->applicable($box)) {if ($box->parent) {$this->_maxw = $wc->apply($this->_maxw, $box->parent->get_width());} else {$this->_maxw = $wc->apply($this->_maxw, $this->_maxw);};};return $this->_maxw + $box->_get_hor_extra();}}?>