1<?php
2
3require_once(HTML2PS_DIR.'value.margin.class.php');
4
5class CSSMargin extends CSSPropertyHandler {
6  var $default_value;
7
8  function CSSMargin() {
9    $this->default_value = $this->parse("0");
10    $this->CSSPropertyHandler(false, false);
11  }
12
13  function default_value() {
14    return $this->default_value->copy();
15  }
16
17  function parse_in($value) {
18    $values = preg_split('/\s+/', trim($value));
19
20    switch (count($values)) {
21    case 1:
22      $v1 = $values[0];
23      return array($v1, $v1, $v1, $v1);
24    case 2:
25      $v1 = $values[0];
26      $v2 = $values[1];
27      return array($v1, $v2, $v1, $v2);
28    case 3:
29      $v1 = $values[0];
30      $v2 = $values[1];
31      $v3 = $values[2];
32      return array($v1, $v2, $v3, $v2);
33    case 4:
34      $v1 = $values[0];
35      $v2 = $values[1];
36      $v3 = $values[2];
37      $v4 = $values[3];
38      return array($v1, $v2, $v3, $v4);
39    default:
40      // We newer should get there, because 'margin' value can contain from 1 to 4 widths
41      return array(0,0,0,0);
42    };
43  }
44
45  function parse($value) {
46    if ($value === 'inherit') {
47      return CSS_PROPERTY_INHERIT;
48    };
49
50    $value = MarginValue::init($this->parse_in($value));
51    return $value;
52  }
53
54  function get_property_code() {
55    return CSS_MARGIN;
56  }
57
58  function get_property_name() {
59    return 'margin';
60  }
61}
62
63class CSSMarginTop extends CSSSubFieldProperty {
64  function parse($value) {
65    if ($value === 'inherit') { return CSS_PROPERTY_INHERIT; };
66    return MarginSideValue::init($value);
67  }
68
69  function get_property_code() {
70    return CSS_MARGIN_TOP;
71  }
72
73  function get_property_name() {
74    return 'margin-top';
75  }
76}
77
78class CSSMarginRight extends CSSSubFieldProperty {
79  function parse($value) {
80    if ($value === 'inherit') { return CSS_PROPERTY_INHERIT; };
81    return MarginSideValue::init($value);
82  }
83
84  function get_property_code() {
85    return CSS_MARGIN_RIGHT;
86  }
87
88  function get_property_name() {
89    return 'margin-right';
90  }
91}
92
93class CSSMarginLeft extends CSSSubFieldProperty {
94  function parse($value) {
95    if ($value === 'inherit') { return CSS_PROPERTY_INHERIT; };
96    return MarginSideValue::init($value);
97  }
98
99  function get_property_code() {
100    return CSS_MARGIN_LEFT;
101  }
102
103  function get_property_name() {
104    return 'margin-left';
105  }
106}
107
108class CSSMarginBottom extends CSSSubFieldProperty {
109  function parse($value) {
110    if ($value === 'inherit') { return CSS_PROPERTY_INHERIT; };
111    return MarginSideValue::init($value);
112  }
113
114  function get_property_code() {
115    return CSS_MARGIN_BOTTOM;
116  }
117
118  function get_property_name() {
119    return 'margin-bottom';
120  }
121}
122
123$mh = new CSSMargin;
124CSS::register_css_property($mh);
125CSS::register_css_property(new CSSMarginLeft($mh, 'left'));
126CSS::register_css_property(new CSSMarginRight($mh, 'right'));
127CSS::register_css_property(new CSSMarginTop($mh, 'top'));
128CSS::register_css_property(new CSSMarginBottom($mh, 'bottom'));
129
130?>
131