OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 // - BeforeAnchor 0 | 136 // - BeforeAnchor 0 |
137 // - AfterChildren last editing offset in anchor node | 137 // - AfterChildren last editing offset in anchor node |
138 // - AfterAnchor last editing offset in anchor node | 138 // - AfterAnchor last editing offset in anchor node |
139 // Editing operations will change in anchor node rather than nodes around | 139 // Editing operations will change in anchor node rather than nodes around |
140 // anchor node. | 140 // anchor node. |
141 int computeEditingOffset() const; | 141 int computeEditingOffset() const; |
142 | 142 |
143 // New code should not use this function. | 143 // New code should not use this function. |
144 int deprecatedEditingOffset() const; | 144 int deprecatedEditingOffset() const; |
145 | 145 |
| 146 // |deprecatedEditingOffset()| is used only for layout object related |
| 147 // functions, |isRenderedCharacter()|, |inRenderedText()|, and |
| 148 // |rendersInDifferentPosition()|. |
| 149 // New code should not use this function. |
| 150 int deprecatedOffset() const { return m_offset; } |
| 151 |
146 // These are convenience methods which are smart about whether the position
is neighbor anchored or parent anchored | 152 // These are convenience methods which are smart about whether the position
is neighbor anchored or parent anchored |
147 Node* computeNodeBeforePosition() const; | 153 Node* computeNodeBeforePosition() const; |
148 Node* computeNodeAfterPosition() const; | 154 Node* computeNodeAfterPosition() const; |
149 | 155 |
150 // Returns node as |Range::firstNode()|. This position must be a | 156 // Returns node as |Range::firstNode()|. This position must be a |
151 // |PositionAnchorType::OffsetInAhcor| to behave as |Range| boundary point. | 157 // |PositionAnchorType::OffsetInAhcor| to behave as |Range| boundary point. |
152 Node* nodeAsRangeFirstNode() const; | 158 Node* nodeAsRangeFirstNode() const; |
153 | 159 |
154 // Similar to |nodeAsRangeLastNode()|, but returns a node in a range. | 160 // Similar to |nodeAsRangeLastNode()|, but returns a node in a range. |
155 Node* nodeAsRangeLastNode() const; | 161 Node* nodeAsRangeLastNode() const; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 bool atStartOfTree() const; | 209 bool atStartOfTree() const; |
204 bool atEndOfTree() const; | 210 bool atEndOfTree() const; |
205 | 211 |
206 // These return useful visually equivalent positions. | 212 // These return useful visually equivalent positions. |
207 PositionAlgorithm<Strategy> upstream(EditingBoundaryCrossingRule = CannotCro
ssEditingBoundary) const; | 213 PositionAlgorithm<Strategy> upstream(EditingBoundaryCrossingRule = CannotCro
ssEditingBoundary) const; |
208 PositionAlgorithm<Strategy> downstream(EditingBoundaryCrossingRule = CannotC
rossEditingBoundary) const; | 214 PositionAlgorithm<Strategy> downstream(EditingBoundaryCrossingRule = CannotC
rossEditingBoundary) const; |
209 | 215 |
210 bool isCandidate() const; | 216 bool isCandidate() const; |
211 bool inRenderedText() const; | 217 bool inRenderedText() const; |
212 bool isRenderedCharacter() const; | 218 bool isRenderedCharacter() const; |
213 bool rendersInDifferentPosition(const PositionAlgorithm<Strategy>&) const; | |
214 | 219 |
215 InlineBoxPosition computeInlineBoxPosition(EAffinity) const; | 220 InlineBoxPosition computeInlineBoxPosition(EAffinity) const; |
216 InlineBoxPosition computeInlineBoxPosition(EAffinity, TextDirection primaryD
irection) const; | 221 InlineBoxPosition computeInlineBoxPosition(EAffinity, TextDirection primaryD
irection) const; |
217 | 222 |
218 TextDirection primaryDirection() const; | 223 TextDirection primaryDirection() const; |
219 | 224 |
220 static bool hasRenderedNonAnonymousDescendantsWithHeight(LayoutObject*); | 225 static bool hasRenderedNonAnonymousDescendantsWithHeight(LayoutObject*); |
221 static bool nodeIsUserSelectNone(Node*); | 226 static bool nodeIsUserSelectNone(Node*); |
222 static bool nodeIsUserSelectAll(const Node*); | 227 static bool nodeIsUserSelectAll(const Node*); |
223 static Node* rootUserSelectAllForNode(Node*); | 228 static Node* rootUserSelectAllForNode(Node*); |
(...skipping 22 matching lines...) Expand all Loading... |
246 { | 251 { |
247 visitor->trace(m_anchorNode); | 252 visitor->trace(m_anchorNode); |
248 } | 253 } |
249 | 254 |
250 private: | 255 private: |
251 bool isAfterAnchorOrAfterChildren() const | 256 bool isAfterAnchorOrAfterChildren() const |
252 { | 257 { |
253 return isAfterAnchor() || isAfterChildren(); | 258 return isAfterAnchor() || isAfterChildren(); |
254 } | 259 } |
255 | 260 |
256 int renderedOffset() const; | |
257 | |
258 RefPtrWillBeMember<Node> m_anchorNode; | 261 RefPtrWillBeMember<Node> m_anchorNode; |
259 // m_offset can be the offset inside m_anchorNode, or if editingIgnoresConte
nt(m_anchorNode) | 262 // m_offset can be the offset inside m_anchorNode, or if editingIgnoresConte
nt(m_anchorNode) |
260 // returns true, then other places in editing will treat m_offset == 0 as "b
efore the anchor" | 263 // returns true, then other places in editing will treat m_offset == 0 as "b
efore the anchor" |
261 // and m_offset > 0 as "after the anchor node". See parentAnchoredEquivalen
t for more info. | 264 // and m_offset > 0 as "after the anchor node". See parentAnchoredEquivalen
t for more info. |
262 int m_offset; | 265 int m_offset; |
263 PositionAnchorType m_anchorType; | 266 PositionAnchorType m_anchorType; |
264 bool m_isLegacyEditingPosition; | 267 bool m_isLegacyEditingPosition; |
265 }; | 268 }; |
266 | 269 |
267 extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionAlgorithm<EditingStrat
egy>; | 270 extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionAlgorithm<EditingStrat
egy>; |
268 extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionAlgorithm<EditingInCom
posedTreeStrategy>; | 271 extern template class CORE_EXTERN_TEMPLATE_EXPORT PositionAlgorithm<EditingInCom
posedTreeStrategy>; |
269 | 272 |
270 using Position = PositionAlgorithm<EditingStrategy>; | 273 using Position = PositionAlgorithm<EditingStrategy>; |
271 using PositionInComposedTree = PositionAlgorithm<EditingInComposedTreeStrategy>; | 274 using PositionInComposedTree = PositionAlgorithm<EditingInComposedTreeStrategy>; |
272 | 275 |
| 276 bool rendersInDifferentPosition(const Position&, const Position&); |
| 277 |
273 inline Position createLegacyEditingPosition(PassRefPtrWillBeRawPtr<Node> node, i
nt offset) | 278 inline Position createLegacyEditingPosition(PassRefPtrWillBeRawPtr<Node> node, i
nt offset) |
274 { | 279 { |
275 return Position::createLegacyEditingPosition(node, offset); | 280 return Position::createLegacyEditingPosition(node, offset); |
276 } | 281 } |
277 | 282 |
278 template <typename Strategy> | 283 template <typename Strategy> |
279 bool operator==(const PositionAlgorithm<Strategy>& a, const PositionAlgorithm<St
rategy>& b) | 284 bool operator==(const PositionAlgorithm<Strategy>& a, const PositionAlgorithm<St
rategy>& b) |
280 { | 285 { |
281 if (a.isNull()) | 286 if (a.isNull()) |
282 return b.isNull(); | 287 return b.isNull(); |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 | 472 |
468 } // namespace blink | 473 } // namespace blink |
469 | 474 |
470 #ifndef NDEBUG | 475 #ifndef NDEBUG |
471 // Outside the WebCore namespace for ease of invocation from gdb. | 476 // Outside the WebCore namespace for ease of invocation from gdb. |
472 void showTree(const blink::Position&); | 477 void showTree(const blink::Position&); |
473 void showTree(const blink::Position*); | 478 void showTree(const blink::Position*); |
474 #endif | 479 #endif |
475 | 480 |
476 #endif // Position_h | 481 #endif // Position_h |
OLD | NEW |