2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * Copyright (C) 2003, 2010 Apple Inc. All rights reserved.
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
24 #include "core/html/HTMLHRElement.h"
26 #include "core/CSSPropertyNames.h"
27 #include "core/CSSValueKeywords.h"
28 #include "core/HTMLNames.h"
29 #include "core/css/CSSValuePool.h"
30 #include "core/css/StylePropertySet.h"
34 using namespace HTMLNames
;
36 inline HTMLHRElement::HTMLHRElement(Document
& document
)
37 : HTMLElement(hrTag
, document
)
41 DEFINE_NODE_FACTORY(HTMLHRElement
)
43 bool HTMLHRElement::isPresentationAttribute(const QualifiedName
& name
) const
45 if (name
== alignAttr
|| name
== widthAttr
|| name
== colorAttr
|| name
== noshadeAttr
|| name
== sizeAttr
)
47 return HTMLElement::isPresentationAttribute(name
);
50 void HTMLHRElement::collectStyleForPresentationAttribute(const QualifiedName
& name
, const AtomicString
& value
, MutableStylePropertySet
* style
)
52 if (name
== alignAttr
) {
53 if (equalIgnoringCase(value
, "left")) {
54 addPropertyToPresentationAttributeStyle(style
, CSSPropertyMarginLeft
, 0, CSSPrimitiveValue::UnitType::Pixels
);
55 addPropertyToPresentationAttributeStyle(style
, CSSPropertyMarginRight
, CSSValueAuto
);
56 } else if (equalIgnoringCase(value
, "right")) {
57 addPropertyToPresentationAttributeStyle(style
, CSSPropertyMarginLeft
, CSSValueAuto
);
58 addPropertyToPresentationAttributeStyle(style
, CSSPropertyMarginRight
, 0, CSSPrimitiveValue::UnitType::Pixels
);
60 addPropertyToPresentationAttributeStyle(style
, CSSPropertyMarginLeft
, CSSValueAuto
);
61 addPropertyToPresentationAttributeStyle(style
, CSSPropertyMarginRight
, CSSValueAuto
);
63 } else if (name
== widthAttr
) {
65 int v
= value
.toInt(&ok
);
67 addPropertyToPresentationAttributeStyle(style
, CSSPropertyWidth
, 1, CSSPrimitiveValue::UnitType::Pixels
);
69 addHTMLLengthToStyle(style
, CSSPropertyWidth
, value
);
70 } else if (name
== colorAttr
) {
71 addPropertyToPresentationAttributeStyle(style
, CSSPropertyBorderStyle
, CSSValueSolid
);
72 addHTMLColorToStyle(style
, CSSPropertyBorderColor
, value
);
73 addHTMLColorToStyle(style
, CSSPropertyBackgroundColor
, value
);
74 } else if (name
== noshadeAttr
) {
75 if (!hasAttribute(colorAttr
)) {
76 addPropertyToPresentationAttributeStyle(style
, CSSPropertyBorderStyle
, CSSValueSolid
);
78 RefPtrWillBeRawPtr
<CSSPrimitiveValue
> darkGrayValue
= cssValuePool().createColorValue(Color::darkGray
);
79 style
->setProperty(CSSPropertyBorderColor
, darkGrayValue
);
80 style
->setProperty(CSSPropertyBackgroundColor
, darkGrayValue
);
82 } else if (name
== sizeAttr
) {
83 StringImpl
* si
= value
.impl();
84 int size
= si
->toInt();
86 addPropertyToPresentationAttributeStyle(style
, CSSPropertyBorderBottomWidth
, 0, CSSPrimitiveValue::UnitType::Pixels
);
88 addPropertyToPresentationAttributeStyle(style
, CSSPropertyHeight
, size
- 2, CSSPrimitiveValue::UnitType::Pixels
);
90 HTMLElement::collectStyleForPresentationAttribute(name
, value
, style
);