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. |
| 5 * All rights reserved. |
5 * | 6 * |
6 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
10 * | 11 * |
11 * This library is distributed in the hope that it will be useful, | 12 * This library is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 * Library General Public License for more details. | 15 * Library General Public License for more details. |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 return LineLayoutText(InlineBox::getLineLayoutItem()); | 64 return LineLayoutText(InlineBox::getLineLayoutItem()); |
64 } | 65 } |
65 | 66 |
66 void destroy() final; | 67 void destroy() final; |
67 | 68 |
68 InlineTextBox* prevTextBox() const { return m_prevTextBox; } | 69 InlineTextBox* prevTextBox() const { return m_prevTextBox; } |
69 InlineTextBox* nextTextBox() const { return m_nextTextBox; } | 70 InlineTextBox* nextTextBox() const { return m_nextTextBox; } |
70 void setNextTextBox(InlineTextBox* n) { m_nextTextBox = n; } | 71 void setNextTextBox(InlineTextBox* n) { m_nextTextBox = n; } |
71 void setPreviousTextBox(InlineTextBox* p) { m_prevTextBox = p; } | 72 void setPreviousTextBox(InlineTextBox* p) { m_prevTextBox = p; } |
72 | 73 |
73 // FIXME: These accessors should ASSERT(!isDirty()). See https://bugs.webkit.o
rg/show_bug.cgi?id=97264 | 74 // FIXME: These accessors should ASSERT(!isDirty()). See |
| 75 // https://bugs.webkit.org/show_bug.cgi?id=97264 |
74 unsigned start() const { return m_start; } | 76 unsigned start() const { return m_start; } |
75 unsigned end() const { return m_len ? m_start + m_len - 1 : m_start; } | 77 unsigned end() const { return m_len ? m_start + m_len - 1 : m_start; } |
76 unsigned len() const { return m_len; } | 78 unsigned len() const { return m_len; } |
77 | 79 |
78 void offsetRun(int delta); | 80 void offsetRun(int delta); |
79 | 81 |
80 unsigned short truncation() const { return m_truncation; } | 82 unsigned short truncation() const { return m_truncation; } |
81 | 83 |
82 void markDirty() final; | 84 void markDirty() final; |
83 | 85 |
(...skipping 15 matching lines...) Expand all Loading... |
99 | 101 |
100 LayoutRect logicalOverflowRect() const; | 102 LayoutRect logicalOverflowRect() const; |
101 void setLogicalOverflowRect(const LayoutRect&); | 103 void setLogicalOverflowRect(const LayoutRect&); |
102 LayoutUnit logicalTopVisualOverflow() const { | 104 LayoutUnit logicalTopVisualOverflow() const { |
103 return logicalOverflowRect().y(); | 105 return logicalOverflowRect().y(); |
104 } | 106 } |
105 LayoutUnit logicalBottomVisualOverflow() const { | 107 LayoutUnit logicalBottomVisualOverflow() const { |
106 return logicalOverflowRect().maxY(); | 108 return logicalOverflowRect().maxY(); |
107 } | 109 } |
108 | 110 |
109 // charactersWithHyphen, if provided, must not be destroyed before the TextRun
. | 111 // charactersWithHyphen, if provided, must not be destroyed before the |
| 112 // TextRun. |
110 TextRun constructTextRun(const ComputedStyle&, | 113 TextRun constructTextRun(const ComputedStyle&, |
111 StringBuilder* charactersWithHyphen = nullptr) const; | 114 StringBuilder* charactersWithHyphen = nullptr) const; |
112 TextRun constructTextRun(const ComputedStyle&, | 115 TextRun constructTextRun(const ComputedStyle&, |
113 StringView, | 116 StringView, |
114 int maximumLength, | 117 int maximumLength, |
115 StringBuilder* charactersWithHyphen = nullptr) const; | 118 StringBuilder* charactersWithHyphen = nullptr) const; |
116 | 119 |
117 #ifndef NDEBUG | 120 #ifndef NDEBUG |
118 void showBox(int = 0) const override; | 121 void showBox(int = 0) const override; |
119 #endif | 122 #endif |
120 const char* boxName() const override; | 123 const char* boxName() const override; |
121 String debugName() const override; | 124 String debugName() const override; |
122 | 125 |
123 String text() const; | 126 String text() const; |
124 | 127 |
125 public: | 128 public: |
126 TextRun constructTextRunForInspector(const ComputedStyle&) const; | 129 TextRun constructTextRunForInspector(const ComputedStyle&) const; |
127 LayoutRect calculateBoundaries() const override { | 130 LayoutRect calculateBoundaries() const override { |
128 return LayoutRect(x(), y(), width(), height()); | 131 return LayoutRect(x(), y(), width(), height()); |
129 } | 132 } |
130 | 133 |
131 virtual LayoutRect localSelectionRect(int startPos, int endPos) const; | 134 virtual LayoutRect localSelectionRect(int startPos, int endPos) const; |
132 bool isSelected(int startPos, int endPos) const; | 135 bool isSelected(int startPos, int endPos) const; |
133 void selectionStartEnd(int& sPos, int& ePos) const; | 136 void selectionStartEnd(int& sPos, int& ePos) const; |
134 | 137 |
135 // These functions both paint markers and update the DocumentMarker's rendered
Rect. | 138 // These functions both paint markers and update the DocumentMarker's |
| 139 // renderedRect. |
136 virtual void paintDocumentMarker(GraphicsContext&, | 140 virtual void paintDocumentMarker(GraphicsContext&, |
137 const LayoutPoint& boxOrigin, | 141 const LayoutPoint& boxOrigin, |
138 DocumentMarker*, | 142 DocumentMarker*, |
139 const ComputedStyle&, | 143 const ComputedStyle&, |
140 const Font&, | 144 const Font&, |
141 bool grammar) const; | 145 bool grammar) const; |
142 virtual void paintTextMatchMarkerForeground(const PaintInfo&, | 146 virtual void paintTextMatchMarkerForeground(const PaintInfo&, |
143 const LayoutPoint& boxOrigin, | 147 const LayoutPoint& boxOrigin, |
144 DocumentMarker*, | 148 DocumentMarker*, |
145 const ComputedStyle&, | 149 const ComputedStyle&, |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 m_logicalWidth += newExpansion; | 197 m_logicalWidth += newExpansion; |
194 } | 198 } |
195 | 199 |
196 private: | 200 private: |
197 bool isInlineTextBox() const final { return true; } | 201 bool isInlineTextBox() const final { return true; } |
198 | 202 |
199 public: | 203 public: |
200 int caretMinOffset() const final; | 204 int caretMinOffset() const final; |
201 int caretMaxOffset() const final; | 205 int caretMaxOffset() const final; |
202 | 206 |
203 LayoutUnit textPos() | 207 // Returns the x position relative to the left start of the text line. |
204 const; // returns the x position relative to the left start of the text l
ine. | 208 LayoutUnit textPos() const; |
205 | 209 |
206 public: | 210 public: |
207 virtual int offsetForPosition(LayoutUnit x, | 211 virtual int offsetForPosition(LayoutUnit x, |
208 bool includePartialGlyphs = true) const; | 212 bool includePartialGlyphs = true) const; |
209 virtual LayoutUnit positionForOffset(int offset) const; | 213 virtual LayoutUnit positionForOffset(int offset) const; |
210 | 214 |
211 bool containsCaretOffset( | 215 // Returns false for offset after line break. |
212 int offset) const; // false for offset after line break | 216 bool containsCaretOffset(int offset) const; |
213 | 217 |
214 // Fills a vector with the pixel width of each character. | 218 // Fills a vector with the pixel width of each character. |
215 void characterWidths(Vector<float>&) const; | 219 void characterWidths(Vector<float>&) const; |
216 | 220 |
217 private: | 221 private: |
218 InlineTextBox* | 222 // The previous box that also uses our LayoutObject. |
219 m_prevTextBox; // The previous box that also uses our LayoutObject | 223 InlineTextBox* m_prevTextBox; |
220 InlineTextBox* m_nextTextBox; // The next box that also uses our LayoutObject | 224 // The next box that also uses our LayoutObject. |
| 225 InlineTextBox* m_nextTextBox; |
221 | 226 |
222 int m_start; | 227 int m_start; |
223 unsigned short m_len; | 228 unsigned short m_len; |
224 | 229 |
225 // Where to truncate when text overflow is applied. We use special constants
to denote | 230 // Where to truncate when text overflow is applied. We use special constants |
226 // no truncation (the whole run paints) and full truncation (nothing paints at
all). | 231 // to denote no truncation (the whole run paints) and full truncation (nothing |
| 232 // paints at all). |
227 unsigned short m_truncation; | 233 unsigned short m_truncation; |
228 | 234 |
229 private: | 235 private: |
230 TextRun::ExpansionBehavior expansionBehavior() const { | 236 TextRun::ExpansionBehavior expansionBehavior() const { |
231 return (canHaveLeadingExpansion() ? TextRun::AllowLeadingExpansion | 237 return (canHaveLeadingExpansion() ? TextRun::AllowLeadingExpansion |
232 : TextRun::ForbidLeadingExpansion) | | 238 : TextRun::ForbidLeadingExpansion) | |
233 (expansion() && nextLeafChild() ? TextRun::AllowTrailingExpansion | 239 (expansion() && nextLeafChild() ? TextRun::AllowTrailingExpansion |
234 : TextRun::ForbidTrailingExpansion); | 240 : TextRun::ForbidTrailingExpansion); |
235 } | 241 } |
236 }; | 242 }; |
237 | 243 |
238 DEFINE_INLINE_BOX_TYPE_CASTS(InlineTextBox); | 244 DEFINE_INLINE_BOX_TYPE_CASTS(InlineTextBox); |
239 | 245 |
240 } // namespace blink | 246 } // namespace blink |
241 | 247 |
242 #endif // InlineTextBox_h | 248 #endif // InlineTextBox_h |
OLD | NEW |