Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / css / CSSShadowValue.cpp
1 /**
2  * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3  * Copyright (C) 2004, 2005, 2006, 2009 Apple Computer, Inc.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20 #include "config.h"
21 #include "core/css/CSSShadowValue.h"
22
23 #include "core/css/CSSPrimitiveValue.h"
24 #include "wtf/text/StringBuilder.h"
25 #include "wtf/text/WTFString.h"
26
27 namespace blink {
28
29 // Used for text-shadow and box-shadow
30 CSSShadowValue::CSSShadowValue(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> x,
31     PassRefPtrWillBeRawPtr<CSSPrimitiveValue> y,
32     PassRefPtrWillBeRawPtr<CSSPrimitiveValue> blur,
33     PassRefPtrWillBeRawPtr<CSSPrimitiveValue> spread,
34     PassRefPtrWillBeRawPtr<CSSPrimitiveValue> style,
35     PassRefPtrWillBeRawPtr<CSSPrimitiveValue> color)
36     : CSSValue(ShadowClass)
37     , x(x)
38     , y(y)
39     , blur(blur)
40     , spread(spread)
41     , style(style)
42     , color(color)
43 {
44 }
45
46 String CSSShadowValue::customCSSText() const
47 {
48     StringBuilder text;
49
50     if (color)
51         text.append(color->cssText());
52     if (x) {
53         if (!text.isEmpty())
54             text.append(' ');
55         text.append(x->cssText());
56     }
57     if (y) {
58         if (!text.isEmpty())
59             text.append(' ');
60         text.append(y->cssText());
61     }
62     if (blur) {
63         if (!text.isEmpty())
64             text.append(' ');
65         text.append(blur->cssText());
66     }
67     if (spread) {
68         if (!text.isEmpty())
69             text.append(' ');
70         text.append(spread->cssText());
71     }
72     if (style) {
73         if (!text.isEmpty())
74             text.append(' ');
75         text.append(style->cssText());
76     }
77
78     return text.toString();
79 }
80
81 bool CSSShadowValue::equals(const CSSShadowValue& other) const
82 {
83     return compareCSSValuePtr(color, other.color)
84         && compareCSSValuePtr(x, other.x)
85         && compareCSSValuePtr(y, other.y)
86         && compareCSSValuePtr(blur, other.blur)
87         && compareCSSValuePtr(spread, other.spread)
88         && compareCSSValuePtr(style, other.style);
89 }
90
91 void CSSShadowValue::traceAfterDispatch(Visitor* visitor)
92 {
93     visitor->trace(x);
94     visitor->trace(y);
95     visitor->trace(blur);
96     visitor->trace(spread);
97     visitor->trace(style);
98     visitor->trace(color);
99     CSSValue::traceAfterDispatch(visitor);
100 }
101
102 }