1<?php
2// $Header: /cvsroot/html2ps/css.border.width.inc.php,v 1.4 2007/02/04 17:08:19 Konstantin Exp $
3
4require_once(HTML2PS_DIR.'value.border.width.class.php');
5
6class CSSBorderWidth extends CSSSubProperty {
7  var $_defaultValue;
8
9  function CSSBorderWidth(&$owner) {
10    $this->CSSSubProperty($owner);
11
12    $this->_defaultValue = new BorderWidth(Value::fromData(0, UNIT_PT),
13                                           Value::fromData(0, UNIT_PT),
14                                           Value::fromData(0, UNIT_PT),
15                                           Value::fromData(0, UNIT_PT));
16  }
17
18  function set_value(&$owner_value, &$value) {
19    if ($value != CSS_PROPERTY_INHERIT) {
20      $owner_value->top->width    = $value->top;
21      $owner_value->right->width  = $value->right;
22      $owner_value->bottom->width = $value->bottom;
23      $owner_value->left->width   = $value->left;
24    } else {
25      $owner_value->top->width    = CSS_PROPERTY_INHERIT;
26      $owner_value->right->width  = CSS_PROPERTY_INHERIT;
27      $owner_value->bottom->width = CSS_PROPERTY_INHERIT;
28      $owner_value->left->width   = CSS_PROPERTY_INHERIT;
29    };
30  }
31
32  function get_value(&$owner_value) {
33    return new BorderWidth($owner_value->top->width,
34                           $owner_value->right->width,
35                           $owner_value->bottom->width,
36                           $owner_value->left->width);
37  }
38
39  function get_property_code() {
40    return CSS_BORDER_WIDTH;
41  }
42
43  function get_property_name() {
44    return 'border-width';
45  }
46
47  function default_value() {
48    return $this->_defaultValue;
49  }
50
51  function parse_value($value) {
52    switch (strtolower($value)) {
53    case 'thin':
54      return Value::fromString('1px');
55    case 'medium':
56      return Value::fromString('3px');
57    case 'thick':
58      return Value::fromString('5px');
59    default:
60      return Value::fromString($value);
61    };
62  }
63
64  function parse($value) {
65    if ($value == 'inherit') {
66      return CSS_PROPERTY_INHERIT;
67    }
68
69    $values = explode(' ', $value);
70
71    switch (count($values)) {
72    case 1:
73      $v1 = $this->parse_value($values[0]);
74      return new BorderWidth($v1, $v1, $v1, $v1);
75    case 2:
76      $v1 = $this->parse_value($values[0]);
77      $v2 = $this->parse_value($values[1]);
78      return new BorderWidth($v1, $v2, $v1, $v2);
79    case 3:
80      $v1 = $this->parse_value($values[0]);
81      $v2 = $this->parse_value($values[1]);
82      $v3 = $this->parse_value($values[2]);
83      return new BorderWidth($v1, $v2, $v3, $v2);
84    case 4:
85      $v1 = $this->parse_value($values[0]);
86      $v2 = $this->parse_value($values[1]);
87      $v3 = $this->parse_value($values[2]);
88      $v4 = $this->parse_value($values[3]);
89      return new BorderWidth($v1, $v2, $v3, $v4);
90    default:
91      return $this->default_value();
92    };
93  }
94}
95
96?>