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