1<?php
2
3class CSSSubProperty extends CSSPropertyHandler {
4  var $_owner;
5
6  function CSSSubProperty(&$owner) {
7    $this->_owner =& $owner;
8  }
9
10  function &get(&$state) {
11    $owner =& $this->owner();
12    $value =& $owner->get($state);
13    $subvalue =& $this->get_value($value);
14    return $subvalue;
15  }
16
17  function is_subproperty() {
18    return true;
19  }
20
21  function &owner() {
22    return $this->_owner;
23  }
24
25  function default_value() {
26  }
27
28  function inherit($old_state, &$new_state) {
29  }
30
31  function inherit_text($old_state, &$new_state) {
32  }
33
34  function replace_array($value, &$state_array) {
35    $owner =& $this->owner();
36
37    $owner_value = $state_array[$owner->get_property_code()];
38
39    if (is_object($owner_value)) {
40      $owner_value = $owner_value->copy();
41    };
42
43    if (is_object($value)) {
44      $this->set_value($owner_value, $value->copy());
45    } else {
46      $this->set_value($owner_value, $value);
47    };
48
49    $state_array[$owner->get_property_code()] = $owner_value;
50  }
51
52  function replace($value, &$state) {
53    $owner =& $this->owner();
54    $owner_value = $owner->get($state->getState());
55
56    if (is_object($owner_value)) {
57      $owner_value =& $owner_value->copy();
58    };
59
60    if (is_object($value)) {
61      $value_copy =& $value->copy();
62      $this->set_value($owner_value, $value_copy);
63    } else {
64      $this->set_value($owner_value, $value);
65    };
66
67    $owner->replaceDefault($owner_value, $state);
68    $state->set_propertyDefaultFlag($this->get_property_code(), false);
69  }
70
71  function set_value(&$owner_value, &$value) {
72    error_no_method('set_value', get_class($this));
73  }
74
75  function &get_value(&$owner_value) {
76    error_no_method('get_value', get_class($this));
77  }
78}
79
80?>