1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_BASE_ACCESSIBILITY_ACCESSIBLE_TEXT_UTILS_H_ 6 #define UI_BASE_ACCESSIBILITY_ACCESSIBLE_TEXT_UTILS_H_ 7 8 #include <vector> 9 10 #include "base/basictypes.h" 11 #include "base/strings/string16.h" 12 #include "ui/base/ui_export.h" 13 14 namespace ui { 15 16 // Boundaries that can be passed to FindAccessibleTextBoundary, 17 // representing various visual boundaries in (potentially multi-line) 18 // text. This is used by assistive technology in order to, for example, 19 // retrieve the nearest word to the cursor, or retrieve all of the 20 // text from the current cursor position to the end of the line. 21 // These should be self-explanatory; "line" here refers to the visual 22 // line as currently displayed (possibly affected by wrapping). 23 enum TextBoundaryType { 24 CHAR_BOUNDARY, 25 WORD_BOUNDARY, 26 LINE_BOUNDARY, 27 SENTENCE_BOUNDARY, 28 PARAGRAPH_BOUNDARY, 29 ALL_BOUNDARY 30 }; 31 32 // A direction when searching for the next boundary. 33 enum TextBoundaryDirection { 34 // Search forwards for the next boundary past the starting position. 35 FORWARDS_DIRECTION, 36 // Search backwards for the previous boundary before the starting position. 37 BACKWARDS_DIRECTION 38 }; 39 40 // Convenience method needed to implement platform-specific text 41 // accessibility APIs like IAccessible2. Search forwards or backwards 42 // (depending on |direction|) from the given |start_offset| until the 43 // given boundary is found, and return the offset of that boundary, 44 // using the vector of line break character offsets in |line_breaks|. 45 size_t UI_EXPORT FindAccessibleTextBoundary(const base::string16& text, 46 const std::vector<int>& line_breaks, 47 TextBoundaryType boundary, 48 size_t start_offset, 49 TextBoundaryDirection direction); 50 51 } // namespace ui 52 53 #endif // UI_BASE_ACCESSIBILITY_ACCESSIBLE_TEXT_UTILS_H_ 54