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 14namespace 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). 23enum 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. 33enum 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|. 45size_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