OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
11 * version 2 of the License, or (at your option) any later version. | 11 * version 2 of the License, or (at your option) any later version. |
12 * | 12 * |
13 * This library is distributed in the hope that it will be useful, | 13 * This library is distributed in the hope that it will be useful, |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 * Library General Public License for more details. | 16 * Library General Public License for more details. |
17 * | 17 * |
18 * You should have received a copy of the GNU Library General Public License | 18 * You should have received a copy of the GNU Library General Public License |
19 * along with this library; see the file COPYING.LIB. If not, write to | 19 * along with this library; see the file COPYING.LIB. If not, write to |
20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
21 * Boston, MA 02110-1301, USA. | 21 * Boston, MA 02110-1301, USA. |
22 * | 22 * |
23 */ | 23 */ |
24 | 24 |
25 #ifndef BorderValue_h | 25 #ifndef BorderValue_h |
26 #define BorderValue_h | 26 #define BorderValue_h |
27 | 27 |
28 #include "core/platform/graphics/Color.h" | 28 #include "core/css/StyleColor.h" |
29 #include "core/rendering/style/RenderStyleConstants.h" | 29 #include "core/rendering/style/RenderStyleConstants.h" |
30 | 30 |
31 namespace WebCore { | 31 namespace WebCore { |
32 | 32 |
33 class BorderValue { | 33 class BorderValue { |
34 friend class RenderStyle; | 34 friend class RenderStyle; |
35 public: | 35 public: |
36 BorderValue() | 36 BorderValue() |
37 : m_color(0) | 37 : m_color(0) |
38 , m_colorIsValid(false) | 38 , m_colorIsValid(false) |
| 39 , m_currentColor(false) |
39 , m_width(3) | 40 , m_width(3) |
40 , m_style(BNONE) | 41 , m_style(BNONE) |
41 , m_isAuto(AUTO_OFF) | 42 , m_isAuto(AUTO_OFF) |
42 { | 43 { |
43 } | 44 } |
44 | 45 |
45 bool nonZero(bool checkStyle = true) const | 46 bool nonZero(bool checkStyle = true) const |
46 { | 47 { |
47 return width() && (!checkStyle || m_style != BNONE); | 48 return width() && (!checkStyle || m_style != BNONE); |
48 } | 49 } |
49 | 50 |
50 bool isTransparent() const | 51 bool isTransparent() const |
51 { | 52 { |
52 return m_colorIsValid && !alphaChannel(m_color); | 53 return m_colorIsValid && !m_currentColor && !m_color.alpha(); |
53 } | 54 } |
54 | 55 |
55 bool isVisible(bool checkStyle = true) const | 56 bool isVisible(bool checkStyle = true) const |
56 { | 57 { |
57 return nonZero(checkStyle) && !isTransparent() && (!checkStyle || m_styl
e != BHIDDEN); | 58 return nonZero(checkStyle) && !isTransparent() && (!checkStyle || m_styl
e != BHIDDEN); |
58 } | 59 } |
59 | 60 |
60 bool operator==(const BorderValue& o) const | 61 bool operator==(const BorderValue& o) const |
61 { | 62 { |
62 return m_width == o.m_width && m_style == o.m_style && m_color == o.m_co
lor && m_colorIsValid == o.m_colorIsValid; | 63 return m_width == o.m_width && m_style == o.m_style && m_color == o.m_co
lor && m_colorIsValid == o.m_colorIsValid && m_currentColor == o.m_currentColor; |
63 } | 64 } |
64 | 65 |
65 bool operator!=(const BorderValue& o) const | 66 bool operator!=(const BorderValue& o) const |
66 { | 67 { |
67 return !(*this == o); | 68 return !(*this == o); |
68 } | 69 } |
69 | 70 |
70 void setColor(const Color& color) | 71 void setColor(const StyleColor& color) |
71 { | 72 { |
72 m_color = color.rgb(); | 73 m_color = color.color(); |
73 m_colorIsValid = color.isValid(); | 74 m_colorIsValid = color.isValid(); |
| 75 m_currentColor = color.isCurrentColor(); |
74 } | 76 } |
75 | 77 |
76 Color color() const { return Color(m_color, m_colorIsValid); } | 78 StyleColor color() const { return StyleColor(m_color, m_colorIsValid, m_curr
entColor); } |
77 | 79 |
78 unsigned width() const { return m_width; } | 80 unsigned width() const { return m_width; } |
79 EBorderStyle style() const { return static_cast<EBorderStyle>(m_style); } | 81 EBorderStyle style() const { return static_cast<EBorderStyle>(m_style); } |
80 | 82 |
81 protected: | 83 protected: |
82 RGBA32 m_color; | 84 Color m_color; |
83 unsigned m_colorIsValid : 1; | 85 unsigned m_colorIsValid : 1; |
| 86 unsigned m_currentColor : 1; |
84 | 87 |
85 unsigned m_width : 26; | 88 unsigned m_width : 25; |
86 unsigned m_style : 4; // EBorderStyle | 89 unsigned m_style : 4; // EBorderStyle |
87 | 90 |
88 // This is only used by OutlineValue but moved here to keep the bits packed. | 91 // This is only used by OutlineValue but moved here to keep the bits packed. |
89 unsigned m_isAuto : 1; // OutlineIsAuto | 92 unsigned m_isAuto : 1; // OutlineIsAuto |
90 }; | 93 }; |
91 | 94 |
92 } // namespace WebCore | 95 } // namespace WebCore |
93 | 96 |
94 #endif // BorderValue_h | 97 #endif // BorderValue_h |
OLD | NEW |