1<?php
2// $Header: /cvsroot/html2ps/css.border.color.inc.php,v 1.3 2006/11/11 13:43:52 Konstantin Exp $
3
4require_once(HTML2PS_DIR.'value.border.color.class.php');
5
6class CSSBorderColor extends CSSSubProperty {
7  var $_defaultValue;
8
9  function CSSBorderColor(&$owner) {
10    $this->CSSSubProperty($owner);
11
12    $this->_defaultValue = new BorderColor(new Color(array(0,0,0), true),
13                                           new Color(array(0,0,0), true),
14                                           new Color(array(0,0,0), true),
15                                           new Color(array(0,0,0), true));
16  }
17
18  function set_value(&$owner_value, &$value) {
19    if ($value != CSS_PROPERTY_INHERIT) {
20      $owner_value->top->setColor($value->top);
21      $owner_value->right->setColor($value->right);
22      $owner_value->bottom->setColor($value->bottom);
23      $owner_value->left->setColor($value->left);
24    } else {
25      $owner_value->top->setColor(CSS_PROPERTY_INHERIT);
26      $owner_value->right->setColor(CSS_PROPERTY_INHERIT);
27      $owner_value->bottom->setColor(CSS_PROPERTY_INHERIT);
28      $owner_value->left->setColor(CSS_PROPERTY_INHERIT);
29    };
30  }
31
32  function get_value(&$owner_value) {
33    return new BorderColor($owner_value->top->color,
34                           $owner_value->right->color,
35                           $owner_value->bottom->color,
36                           $owner_value->left->color);
37  }
38
39  function get_property_code() {
40    return CSS_BORDER_COLOR;
41  }
42
43  function get_property_name() {
44    return 'border-color';
45  }
46
47  function default_value() {
48    return $this->_defaultValue;
49  }
50
51  function parse_in($value) {
52    $values = preg_split("/(?<![,(\s])\s+/ ",$value);
53
54    switch (count($values)) {
55    case 1:
56      $v1 = parse_color_declaration($values[0]);
57      return array($v1, $v1, $v1, $v1);
58    case 2:
59      $v1 = parse_color_declaration($values[0]);
60      $v2 = parse_color_declaration($values[1]);
61      return array($v1, $v2, $v1, $v2);
62    case 3:
63      $v1 = parse_color_declaration($values[0]);
64      $v2 = parse_color_declaration($values[1]);
65      $v3 = parse_color_declaration($values[2]);
66      return array($v1, $v2, $v3, $v2);
67    case 4:
68      $v1 = parse_color_declaration($values[0]);
69      $v2 = parse_color_declaration($values[1]);
70      $v3 = parse_color_declaration($values[2]);
71      $v4 = parse_color_declaration($values[3]);
72      return array($v1, $v2, $v3, $v4);
73    default:
74      return $this->default_value();
75    };
76  }
77
78  function parse($value) {
79    if ($value == 'inherit') {
80      return CSS_PROPERTY_INHERIT;
81    }
82
83    $colors = $this->parse_in($value);
84
85    return new BorderColor($colors[0],
86                           $colors[1],
87                           $colors[2],
88                           $colors[3]);
89  }
90}
91
92?>