_color = $color;
$this->_image = $image;
$this->_repeat = $repeat;
$this->_position = $position;
$this->_attachment = $attachment;
}
/**
* "Deep copy" routine
*
* @return Background A copy of current object
*/
function ©() {
$value =& new Background(is_null($this->_color) ? null : $this->_color->copy(),
is_null($this->_image) ? null : $this->_image->copy(),
$this->_repeat,
is_null($this->_position) ? null : $this->_position->copy(),
$this->_attachment);
return $value;
}
/**
* Tests if the 'background' CSS property value is the default property value; e.g.
* all subproperty values are set to defaults.
*
* @return bool Flag indicating if current object have default value
*
* @see CSSBackgroundColor::default_value
* @see BackgroundImage::is_default
* @see CSSBackgroundRepeat::default_value
* @see BackgroundPosition::is_default
*/
function is_default() {
return
$this->_color->equals(CSSBackgroundColor::default_value()) &&
$this->_image->is_default() &&
$this->_repeat == CSSBackgroundRepeat::default_value() &&
$this->_position->is_default() &&
$this->_attachment->is_default();
}
/**
* Renders the background for the given box object using an output driver
*
* @param OutputDriver $driver Output driver to be used
* @param GenericFormattedBox $box Box the background is rendered for
*
* @uses GenericFormattedBox
* @uses OutputDriver
*/
function show(&$driver, &$box) {
/**
* Fill box with background color
*
* @see Color::apply
* @see OutputDriver::moveto
* @see OutputDriver::lineto
* @see OutputDriver::closepath
* @see OutputDriver::fill
*/
if (!$this->_color->transparent) {
$this->_color->apply($driver);
$driver->moveto($box->get_left_background(), $box->get_top_background());
$driver->lineto($box->get_right_background(), $box->get_top_background());
$driver->lineto($box->get_right_background(), $box->get_bottom_background());
$driver->lineto($box->get_left_background(), $box->get_bottom_background());
$driver->closepath();
$driver->fill();
};
/**
* Render background image
*
* @see BackgroundImage::show
*/
$this->_image->show($driver, $box, $this->_repeat, $this->_position, $this->_attachment);
}
/**
* Converts the absolute lengths used in subproperties (if any) to the device points
*
* @param float $font_size Font size to use during conversion of 'ex' and 'em' units
*/
function units2pt($font_size) {
$this->_position->units2pt($font_size);
}
function doInherit(&$state) {
if ($this->_color === CSS_PROPERTY_INHERIT) {
$value =& $state->getInheritedProperty(CSS_BACKGROUND_COLOR);
$this->_color = $value->copy();
};
if ($this->_image === CSS_PROPERTY_INHERIT) {
$value =& $state->getInheritedProperty(CSS_BACKGROUND_IMAGE);
$this->_image = $value->copy();
};
if ($this->_position === CSS_PROPERTY_INHERIT) {
$value =& $state->getInheritedProperty(CSS_BACKGROUND_POSITION);
$this->_position = $value->copy();
};
if ($this->_repeat === CSS_PROPERTY_INHERIT) {
$this->_repeat = $state->getInheritedProperty(CSS_BACKGROUND_REPEAT);
};
if ($this->_attachment === CSS_PROPERTY_INHERIT) {
$this->_attachment =& $state->getInheritedProperty(CSS_BACKGROUND_ATTACHMENT);
};
}
}
?>