1 /**
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2006 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 */
21
22 #include "config.h"
23 #include "core/rendering/RenderBR.h"
24
25 #include "core/dom/Document.h"
26 #include "core/rendering/RenderView.h"
27
28 namespace WebCore {
29
newlineString()30 static PassRefPtr<StringImpl> newlineString()
31 {
32 DEFINE_STATIC_LOCAL(const String, string, ("\n"));
33 return string.impl();
34 }
35
RenderBR(Node * node)36 RenderBR::RenderBR(Node* node)
37 : RenderText(node, newlineString())
38 , m_lineHeight(-1)
39 {
40 }
41
~RenderBR()42 RenderBR::~RenderBR()
43 {
44 }
45
lineHeight(bool firstLine) const46 int RenderBR::lineHeight(bool firstLine) const
47 {
48 if (firstLine && document().styleEngine()->usesFirstLineRules()) {
49 RenderStyle* s = style(firstLine);
50 if (s != style())
51 return s->computedLineHeight(view());
52 }
53
54 if (m_lineHeight == -1)
55 m_lineHeight = style()->computedLineHeight(view());
56
57 return m_lineHeight;
58 }
59
styleDidChange(StyleDifference diff,const RenderStyle * oldStyle)60 void RenderBR::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
61 {
62 RenderText::styleDidChange(diff, oldStyle);
63 m_lineHeight = -1;
64 }
65
caretMinOffset() const66 int RenderBR::caretMinOffset() const
67 {
68 return 0;
69 }
70
caretMaxOffset() const71 int RenderBR::caretMaxOffset() const
72 {
73 return 1;
74 }
75
positionForPoint(const LayoutPoint &)76 PositionWithAffinity RenderBR::positionForPoint(const LayoutPoint&)
77 {
78 return createPositionWithAffinity(0, DOWNSTREAM);
79 }
80
81 } // namespace WebCore
82