percentage)) { return $base * $this->percentage / 100; } else { return $this->_units->toPt($base_font_size); }; } function calcPercentage($base) { if (is_null($this->percentage)) { return; }; $this->value = $base * $this->percentage / 100; } function ©() { $value =& new MarginSideValue; $value->value = $this->value; $value->auto = $this->auto; $value->percentage = $this->percentage; $value->_units = $this->_units; return $value; } function is_default() { return $this->value == 0 && !$this->auto && !$this->percentage; } function init($data) { $len = strlen($data); $is_percentage = false; if ($len > 0) { $is_percentage = ($data{$len-1} === '%'); }; $value = new MarginSideValue; $value->_units = Value::fromString($data); $value->value = $data; $value->percentage = $is_percentage ? (int)($data) : null; $value->auto = $data === 'auto'; return $value; } function units2pt($base) { if (is_null($this->percentage)) { $this->value = $this->_units->toPt($base); }; } } class MarginValue extends CSSValue { var $top; var $bottom; var $left; var $right; function doInherit(&$state) { if ($this->top === CSS_PROPERTY_INHERIT) { $value = $state->getInheritedProperty(CSS_MARGIN_TOP); $this->top = $value->copy(); }; if ($this->bottom === CSS_PROPERTY_INHERIT) { $value = $state->getInheritedProperty(CSS_MARGIN_BOTTOM); $this->bottom = $value->copy(); }; if ($this->right === CSS_PROPERTY_INHERIT) { $value = $state->getInheritedProperty(CSS_MARGIN_RIGHT); $this->right = $value->copy(); }; if ($this->left === CSS_PROPERTY_INHERIT) { $value = $state->getInheritedProperty(CSS_MARGIN_LEFT); $this->left = $value->copy(); }; } function ©() { $value =& new MarginValue; $value->top = ($this->top === CSS_PROPERTY_INHERIT) ? CSS_PROPERTY_INHERIT : $this->top->copy(); $value->bottom = ($this->bottom === CSS_PROPERTY_INHERIT) ? CSS_PROPERTY_INHERIT : $this->bottom->copy(); $value->left = ($this->left === CSS_PROPERTY_INHERIT) ? CSS_PROPERTY_INHERIT : $this->left->copy(); $value->right = ($this->right === CSS_PROPERTY_INHERIT) ? CSS_PROPERTY_INHERIT : $this->right->copy(); return $value; } function init($data) { $value = new MarginValue; $value->top = MarginSideValue::init($data[0]); $value->right = MarginSideValue::init($data[1]); $value->bottom = MarginSideValue::init($data[2]); $value->left = MarginSideValue::init($data[3]); return $value; } function is_default() { return $this->left->is_default() && $this->right->is_default() && $this->top->is_default() && $this->bottom->is_default(); } function units2pt($base) { $this->top->units2pt($base); $this->bottom->units2pt($base); $this->left->units2pt($base); $this->right->units2pt($base); } function calcPercentages($base) { $this->top->calcPercentage($base); $this->bottom->calcPercentage($base); $this->left->calcPercentage($base); $this->right->calcPercentage($base); } } ?>