Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpclass CSSPropertyCollection {var $_properties;var $_positions;var $_priorities;var $_max_priority;function CSSPropertyCollection() {$this->_properties = array();$this->_positions = array();$this->_priorities = array();$this->_max_priority = 0;}function apply(&$state) {$properties = $this->getPropertiesRaw();foreach ($properties as $property) {$key = $property->get_code();$value = $property->get_value();$handler =& CSS::get_handler($key);$handler->replace($value, $state);};}function ©() {$collection =& new CSSPropertyCollection();for ($i = 0, $size = count($this->_properties); $i < $size; $i++) {$property =& $this->_properties[$i];$collection->_properties[] =& $property->copy();};$collection->_positions = $this->_positions;$collection->_priorities = $this->_priorities;$collection->_max_priority = $this->_max_priority;return $collection;}function add_property($property) {$this->_max_priority ++;$code = $property->get_code();/*** Important properties shoud not be overridden with non-important ones*/if ($this->is_important($code) &&!$property->is_important()) {return;};if (array_key_exists($code, $this->_positions)) {$this->_properties[$this->_positions[$code]] = $property;$this->_priorities[$this->_positions[$code]] = $this->_max_priority;} else {$this->_properties[] = $property;$this->_priorities[] = $this->_max_priority;$this->_positions[$code] = count($this->_priorities)-1;};}function contains($code) {return isset($this->_positions[$code]);}function getMaxPriority() {return $this->_max_priority;}function getPropertiesSortedByPriority() {$properties = $this->_properties;$priorities = $this->_priorities;array_multisort($priorities, $properties);return $properties;}function getPropertiesRaw() {return $this->_properties;}function is_important($code) {if (!isset($this->_positions[$code])) {return false;};return $this->_properties[$this->_positions[$code]]->is_important();}function &get_property_value($code) {if (!isset($this->_positions[$code])) {$null = null;return $null;};if (!isset($this->_properties[$this->_positions[$code]])) {$null = null;return $null;};$property =& $this->_properties[$this->_positions[$code]];return $property->get_value();}function set_property_value($code, $value) {$this->_properties[$this->_positions[$code]]->set_value($value);}/*** Merge two sets of CSS properties, overwriting old values* with values from $collection*/function merge($collection) {$properties = $collection->getPropertiesSortedByPriority();foreach ($properties as $property) {$this->add_property($property);};}}?>