OLD | NEW |
1 /* | 1 /* |
2 * (C) 1999 Lars Knoll (knoll@kde.org) | 2 * (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Dirk Mueller (mueller@kde.org) | 3 * (C) 2000 Dirk Mueller (mueller@kde.org) |
4 * Copyright (C) 2004, 2005, 2006, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. | 4 * Copyright (C) 2004, 2005, 2006, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 , m_nextTextBox(nullptr) | 44 , m_nextTextBox(nullptr) |
45 , m_start(start) | 45 , m_start(start) |
46 , m_len(length) | 46 , m_len(length) |
47 , m_truncation(cNoTruncation) | 47 , m_truncation(cNoTruncation) |
48 { | 48 { |
49 setIsText(true); | 49 setIsText(true); |
50 } | 50 } |
51 | 51 |
52 LayoutText& layoutObject() const { return toLayoutText(InlineBox::layoutObje
ct()); } | 52 LayoutText& layoutObject() const { return toLayoutText(InlineBox::layoutObje
ct()); } |
53 | 53 |
54 virtual void destroy() override final; | 54 void destroy() final; |
55 | 55 |
56 InlineTextBox* prevTextBox() const { return m_prevTextBox; } | 56 InlineTextBox* prevTextBox() const { return m_prevTextBox; } |
57 InlineTextBox* nextTextBox() const { return m_nextTextBox; } | 57 InlineTextBox* nextTextBox() const { return m_nextTextBox; } |
58 void setNextTextBox(InlineTextBox* n) { m_nextTextBox = n; } | 58 void setNextTextBox(InlineTextBox* n) { m_nextTextBox = n; } |
59 void setPreviousTextBox(InlineTextBox* p) { m_prevTextBox = p; } | 59 void setPreviousTextBox(InlineTextBox* p) { m_prevTextBox = p; } |
60 | 60 |
61 // FIXME: These accessors should ASSERT(!isDirty()). See https://bugs.webkit
.org/show_bug.cgi?id=97264 | 61 // FIXME: These accessors should ASSERT(!isDirty()). See https://bugs.webkit
.org/show_bug.cgi?id=97264 |
62 unsigned start() const { return m_start; } | 62 unsigned start() const { return m_start; } |
63 unsigned end() const { return m_len ? m_start + m_len - 1 : m_start; } | 63 unsigned end() const { return m_len ? m_start + m_len - 1 : m_start; } |
64 unsigned len() const { return m_len; } | 64 unsigned len() const { return m_len; } |
65 | 65 |
66 void offsetRun(int delta); | 66 void offsetRun(int delta); |
67 | 67 |
68 unsigned short truncation() { return m_truncation; } | 68 unsigned short truncation() { return m_truncation; } |
69 | 69 |
70 virtual void markDirty() override final; | 70 void markDirty() final; |
71 | 71 |
72 using InlineBox::hasHyphen; | 72 using InlineBox::hasHyphen; |
73 using InlineBox::setHasHyphen; | 73 using InlineBox::setHasHyphen; |
74 using InlineBox::canHaveLeadingExpansion; | 74 using InlineBox::canHaveLeadingExpansion; |
75 using InlineBox::setCanHaveLeadingExpansion; | 75 using InlineBox::setCanHaveLeadingExpansion; |
76 | 76 |
77 static inline bool compareByStart(const InlineTextBox* first, const InlineTe
xtBox* second) { return first->start() < second->start(); } | 77 static inline bool compareByStart(const InlineTextBox* first, const InlineTe
xtBox* second) { return first->start() < second->start(); } |
78 | 78 |
79 virtual int baselinePosition(FontBaseline) const override final; | 79 int baselinePosition(FontBaseline) const final; |
80 virtual LayoutUnit lineHeight() const override final; | 80 LayoutUnit lineHeight() const final; |
81 | 81 |
82 bool getEmphasisMarkPosition(const ComputedStyle&, TextEmphasisPosition&) co
nst; | 82 bool getEmphasisMarkPosition(const ComputedStyle&, TextEmphasisPosition&) co
nst; |
83 | 83 |
84 LayoutRect logicalOverflowRect() const; | 84 LayoutRect logicalOverflowRect() const; |
85 void setLogicalOverflowRect(const LayoutRect&); | 85 void setLogicalOverflowRect(const LayoutRect&); |
86 LayoutUnit logicalTopVisualOverflow() const { return logicalOverflowRect().y
(); } | 86 LayoutUnit logicalTopVisualOverflow() const { return logicalOverflowRect().y
(); } |
87 LayoutUnit logicalBottomVisualOverflow() const { return logicalOverflowRect(
).maxY(); } | 87 LayoutUnit logicalBottomVisualOverflow() const { return logicalOverflowRect(
).maxY(); } |
88 | 88 |
89 // charactersWithHyphen, if provided, must not be destroyed before the TextR
un. | 89 // charactersWithHyphen, if provided, must not be destroyed before the TextR
un. |
90 TextRun constructTextRun(const ComputedStyle&, const Font&, StringBuilder* c
haractersWithHyphen = nullptr) const; | 90 TextRun constructTextRun(const ComputedStyle&, const Font&, StringBuilder* c
haractersWithHyphen = nullptr) const; |
91 TextRun constructTextRun(const ComputedStyle&, const Font&, StringView, int
maximumLength, StringBuilder* charactersWithHyphen = nullptr) const; | 91 TextRun constructTextRun(const ComputedStyle&, const Font&, StringView, int
maximumLength, StringBuilder* charactersWithHyphen = nullptr) const; |
92 | 92 |
93 #ifndef NDEBUG | 93 #ifndef NDEBUG |
94 virtual void showBox(int = 0) const override; | 94 void showBox(int = 0) const override; |
95 #endif | 95 #endif |
96 virtual const char* boxName() const override; | 96 const char* boxName() const override; |
97 virtual String debugName() const override; | 97 String debugName() const override; |
98 | 98 |
99 String text() const; | 99 String text() const; |
100 | 100 |
101 public: | 101 public: |
102 TextRun constructTextRunForInspector(const ComputedStyle&, const Font&) cons
t; | 102 TextRun constructTextRunForInspector(const ComputedStyle&, const Font&) cons
t; |
103 virtual LayoutRect calculateBoundaries() const override { return LayoutRect(
x(), y(), width(), height()); } | 103 LayoutRect calculateBoundaries() const override { return LayoutRect(x(), y()
, width(), height()); } |
104 | 104 |
105 virtual LayoutRect localSelectionRect(int startPos, int endPos); | 105 virtual LayoutRect localSelectionRect(int startPos, int endPos); |
106 bool isSelected(int startPos, int endPos) const; | 106 bool isSelected(int startPos, int endPos) const; |
107 void selectionStartEnd(int& sPos, int& ePos) const; | 107 void selectionStartEnd(int& sPos, int& ePos) const; |
108 | 108 |
109 // These functions both paint markers and update the DocumentMarker's render
edRect. | 109 // These functions both paint markers and update the DocumentMarker's render
edRect. |
110 virtual void paintDocumentMarker(GraphicsContext*, const LayoutPoint& boxOri
gin, DocumentMarker*, const ComputedStyle&, const Font&, bool grammar); | 110 virtual void paintDocumentMarker(GraphicsContext*, const LayoutPoint& boxOri
gin, DocumentMarker*, const ComputedStyle&, const Font&, bool grammar); |
111 virtual void paintTextMatchMarker(GraphicsContext*, const LayoutPoint& boxOr
igin, DocumentMarker*, const ComputedStyle&, const Font&); | 111 virtual void paintTextMatchMarker(GraphicsContext*, const LayoutPoint& boxOr
igin, DocumentMarker*, const ComputedStyle&, const Font&); |
112 | 112 |
113 virtual void move(const LayoutSize&) override final; | 113 void move(const LayoutSize&) final; |
114 | 114 |
115 protected: | 115 protected: |
116 virtual void paint(const PaintInfo&, const LayoutPoint&, LayoutUnit lineTop,
LayoutUnit lineBottom) override; | 116 void paint(const PaintInfo&, const LayoutPoint&, LayoutUnit lineTop, LayoutU
nit lineBottom) override; |
117 virtual bool nodeAtPoint(HitTestResult&, const HitTestLocation& locationInCo
ntainer, const LayoutPoint& accumulatedOffset, LayoutUnit lineTop, LayoutUnit li
neBottom) override; | 117 bool nodeAtPoint(HitTestResult&, const HitTestLocation& locationInContainer,
const LayoutPoint& accumulatedOffset, LayoutUnit lineTop, LayoutUnit lineBottom
) override; |
118 | 118 |
119 private: | 119 private: |
120 virtual void deleteLine() override final; | 120 void deleteLine() final; |
121 virtual void extractLine() override final; | 121 void extractLine() final; |
122 virtual void attachLine() override final; | 122 void attachLine() final; |
123 | 123 |
124 public: | 124 public: |
125 virtual LayoutObject::SelectionState selectionState() const override final; | 125 LayoutObject::SelectionState selectionState() const final; |
126 | 126 |
127 private: | 127 private: |
128 virtual void clearTruncation() override final { m_truncation = cNoTruncation
; } | 128 void clearTruncation() final { m_truncation = cNoTruncation; } |
129 virtual LayoutUnit placeEllipsisBox(bool flowIsLTR, LayoutUnit visibleLeftEd
ge, LayoutUnit visibleRightEdge, LayoutUnit ellipsisWidth, LayoutUnit &truncated
Width, bool& foundBox) override final; | 129 LayoutUnit placeEllipsisBox(bool flowIsLTR, LayoutUnit visibleLeftEdge, Layo
utUnit visibleRightEdge, LayoutUnit ellipsisWidth, LayoutUnit &truncatedWidth, b
ool& foundBox) final; |
130 | 130 |
131 public: | 131 public: |
132 virtual bool isLineBreak() const override final; | 132 bool isLineBreak() const final; |
133 | 133 |
134 void setExpansion(int newExpansion) | 134 void setExpansion(int newExpansion) |
135 { | 135 { |
136 m_logicalWidth -= expansion(); | 136 m_logicalWidth -= expansion(); |
137 InlineBox::setExpansion(newExpansion); | 137 InlineBox::setExpansion(newExpansion); |
138 m_logicalWidth += newExpansion; | 138 m_logicalWidth += newExpansion; |
139 } | 139 } |
140 | 140 |
141 private: | 141 private: |
142 virtual bool isInlineTextBox() const override final { return true; } | 142 bool isInlineTextBox() const final { return true; } |
143 | 143 |
144 public: | 144 public: |
145 virtual int caretMinOffset() const override final; | 145 int caretMinOffset() const final; |
146 virtual int caretMaxOffset() const override final; | 146 int caretMaxOffset() const final; |
147 | 147 |
148 LayoutUnit textPos() const; // returns the x position relative to the left s
tart of the text line. | 148 LayoutUnit textPos() const; // returns the x position relative to the left s
tart of the text line. |
149 | 149 |
150 public: | 150 public: |
151 virtual int offsetForPosition(LayoutUnit x, bool includePartialGlyphs = true
) const; | 151 virtual int offsetForPosition(LayoutUnit x, bool includePartialGlyphs = true
) const; |
152 virtual LayoutUnit positionForOffset(int offset) const; | 152 virtual LayoutUnit positionForOffset(int offset) const; |
153 | 153 |
154 bool containsCaretOffset(int offset) const; // false for offset after line b
reak | 154 bool containsCaretOffset(int offset) const; // false for offset after line b
reak |
155 | 155 |
156 // Fills a vector with the pixel width of each character. | 156 // Fills a vector with the pixel width of each character. |
(...skipping 18 matching lines...) Expand all Loading... |
175 } | 175 } |
176 }; | 176 }; |
177 | 177 |
178 DEFINE_INLINE_BOX_TYPE_CASTS(InlineTextBox); | 178 DEFINE_INLINE_BOX_TYPE_CASTS(InlineTextBox); |
179 | 179 |
180 void alignSelectionRectToDevicePixels(LayoutRect&); | 180 void alignSelectionRectToDevicePixels(LayoutRect&); |
181 | 181 |
182 } // namespace blink | 182 } // namespace blink |
183 | 183 |
184 #endif // InlineTextBox_h | 184 #endif // InlineTextBox_h |
OLD | NEW |