OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 2009 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 26 matching lines...) Expand all Loading... |
37 class RenderTextFragment; | 37 class RenderTextFragment; |
38 | 38 |
39 enum TextIteratorBehavior { | 39 enum TextIteratorBehavior { |
40 TextIteratorDefaultBehavior = 0, | 40 TextIteratorDefaultBehavior = 0, |
41 TextIteratorEmitsCharactersBetweenAllVisiblePositions = 1 << 0, | 41 TextIteratorEmitsCharactersBetweenAllVisiblePositions = 1 << 0, |
42 TextIteratorEntersTextControls = 1 << 1, | 42 TextIteratorEntersTextControls = 1 << 1, |
43 TextIteratorIgnoresStyleVisibility = 1 << 2, | 43 TextIteratorIgnoresStyleVisibility = 1 << 2, |
44 TextIteratorEmitsOriginalText = 1 << 3, | 44 TextIteratorEmitsOriginalText = 1 << 3, |
45 TextIteratorStopsOnFormControls = 1 << 4, | 45 TextIteratorStopsOnFormControls = 1 << 4, |
46 TextIteratorEmitsImageAltText = 1 << 5, | 46 TextIteratorEmitsImageAltText = 1 << 5, |
47 TextIteratorEntersAuthorShadowRoots = 1 << 6 | 47 TextIteratorEntersAuthorShadowRoots = 1 << 6, |
| 48 TextIteratorBehavesAsIfNodesFollowing = 1 << 7, |
48 }; | 49 }; |
49 typedef unsigned TextIteratorBehaviorFlags; | 50 typedef unsigned TextIteratorBehaviorFlags; |
50 | 51 |
51 // FIXME: Can't really answer this question correctly without knowing the white-
space mode. | 52 // FIXME: Can't really answer this question correctly without knowing the white-
space mode. |
52 // FIXME: Move this somewhere else in the editing directory. It doesn't belong h
ere. | 53 // FIXME: Move this somewhere else in the editing directory. It doesn't belong h
ere. |
53 inline bool isCollapsibleWhitespace(UChar c) | 54 inline bool isCollapsibleWhitespace(UChar c) |
54 { | 55 { |
55 switch (c) { | 56 switch (c) { |
56 case ' ': | 57 case ' ': |
57 case '\n': | 58 case '\n': |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 // Used when the visibility of the style should not affect text gathering. | 208 // Used when the visibility of the style should not affect text gathering. |
208 bool m_ignoresStyleVisibility; | 209 bool m_ignoresStyleVisibility; |
209 // Used when the iteration should stop if form controls are reached. | 210 // Used when the iteration should stop if form controls are reached. |
210 bool m_stopsOnFormControls; | 211 bool m_stopsOnFormControls; |
211 // Used when m_stopsOnFormControls is set to determine if the iterator shoul
d keep advancing. | 212 // Used when m_stopsOnFormControls is set to determine if the iterator shoul
d keep advancing. |
212 bool m_shouldStop; | 213 bool m_shouldStop; |
213 | 214 |
214 bool m_emitsImageAltText; | 215 bool m_emitsImageAltText; |
215 | 216 |
216 bool m_entersAuthorShadowRoots; | 217 bool m_entersAuthorShadowRoots; |
| 218 bool m_hasNodesFollowing; |
217 }; | 219 }; |
218 | 220 |
219 // Iterates through the DOM range, returning all the text, and 0-length boundari
es | 221 // Iterates through the DOM range, returning all the text, and 0-length boundari
es |
220 // at points where replaced elements break up the text flow. The text comes back
in | 222 // at points where replaced elements break up the text flow. The text comes back
in |
221 // chunks so as to optimize for performance of the iteration. | 223 // chunks so as to optimize for performance of the iteration. |
222 class SimplifiedBackwardsTextIterator { | 224 class SimplifiedBackwardsTextIterator { |
223 public: | 225 public: |
224 explicit SimplifiedBackwardsTextIterator(const Range*, TextIteratorBehaviorF
lags = TextIteratorDefaultBehavior); | 226 explicit SimplifiedBackwardsTextIterator(const Range*, TextIteratorBehaviorF
lags = TextIteratorDefaultBehavior); |
225 | 227 |
226 bool atEnd() const { return !m_positionNode || m_shouldStop; } | 228 bool atEnd() const { return !m_positionNode || m_shouldStop; } |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 Vector<UChar> m_buffer; | 365 Vector<UChar> m_buffer; |
364 // Did we have to look ahead in the textIterator to confirm the current chun
k? | 366 // Did we have to look ahead in the textIterator to confirm the current chun
k? |
365 bool m_didLookAhead; | 367 bool m_didLookAhead; |
366 RefPtr<Range> m_range; | 368 RefPtr<Range> m_range; |
367 TextIterator m_textIterator; | 369 TextIterator m_textIterator; |
368 }; | 370 }; |
369 | 371 |
370 } | 372 } |
371 | 373 |
372 #endif | 374 #endif |
OLD | NEW |