Home | History | Annotate | Download | only in accessibility
      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 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