123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #include "nsISupports.idl"
- typedef long AccessibleTextBoundary;
- interface nsIAccessible;
- interface nsIArray;
- interface nsIPersistentProperties;
- interface nsIAccessibleTextRange;
- [scriptable, builtinclass, uuid(93ad2ca1-f12b-4ab9-a793-95d9fa9d1774)]
- interface nsIAccessibleText : nsISupports
- {
- // In parameters for character offsets:
- // -1 will be treated as the equal to the end of the text
- // -2 will be treated as the caret position
- const int32_t TEXT_OFFSET_END_OF_TEXT = -1;
- const int32_t TEXT_OFFSET_CARET = -2;
- const AccessibleTextBoundary BOUNDARY_CHAR = 0;
- const AccessibleTextBoundary BOUNDARY_WORD_START = 1;
- const AccessibleTextBoundary BOUNDARY_WORD_END = 2;
- const AccessibleTextBoundary BOUNDARY_SENTENCE_START = 3; // don't use, deprecated
- const AccessibleTextBoundary BOUNDARY_SENTENCE_END = 4; // don't use, deprecated
- const AccessibleTextBoundary BOUNDARY_LINE_START = 5;
- const AccessibleTextBoundary BOUNDARY_LINE_END = 6;
- /**
- * The current current caret offset.
- * If set < 0 then caret will be placed at the end of the text
- */
- attribute long caretOffset;
- readonly attribute long characterCount;
- readonly attribute long selectionCount;
- /**
- * String methods may need to return multibyte-encoded strings,
- * since some locales can't be encoded using 16-bit chars.
- * So the methods below might return UTF-16 strings, or they could
- * return "string" values which are UTF-8.
- */
- AString getText (in long startOffset, in long endOffset);
- AString getTextAfterOffset (in long offset,
- in AccessibleTextBoundary boundaryType,
- out long startOffset,
- out long endOffset);
- AString getTextAtOffset (in long offset,
- in AccessibleTextBoundary boundaryType,
- out long startOffset,
- out long endOffset);
- AString getTextBeforeOffset (in long offset,
- in AccessibleTextBoundary boundaryType,
- out long startOffset,
- out long endOffset);
- /**
- * It would be better to return an unsigned long here,
- * to allow unicode chars > 16 bits
- */
- wchar getCharacterAtOffset (in long offset);
- /**
- * Get the accessible start/end offsets around the given offset,
- * return the text attributes for this range of text.
- *
- * @param includeDefAttrs [in] points whether text attributes applied to
- * the entire accessible should be included or not.
- * @param offset [in] text offset
- * @param rangeStartOffset [out] start offset of the range of text
- * @param rangeEndOffset [out] end offset of the range of text
- */
- nsIPersistentProperties getTextAttributes(in boolean includeDefAttrs,
- in long offset,
- out long rangeStartOffset,
- out long rangeEndOffset);
- /**
- * Return the text attributes that apply to the entire accessible.
- */
- readonly attribute nsIPersistentProperties defaultTextAttributes;
- /**
- * Returns the bounding box of the specified position.
- *
- * The virtual character after the last character of the represented text,
- * i.e. the one at position length is a special case. It represents the
- * current input position and will therefore typically be queried by AT more
- * often than other positions. Because it does not represent an existing
- * character its bounding box is defined in relation to preceding characters.
- * It should be roughly equivalent to the bounding box of some character when
- * inserted at the end of the text. Its height typically being the maximal
- * height of all the characters in the text or the height of the preceding
- * character, its width being at least one pixel so that the bounding box is
- * not degenerate.
- *
- * @param offset - Index of the character for which to return its bounding
- * box. The valid range is 0..length.
- * @param x - X coordinate of the bounding box of the referenced character.
- * @param y - Y coordinate of the bounding box of the referenced character.
- * @param width - Width of the bounding box of the referenced character.
- * @param height - Height of the bounding box of the referenced character.
- * @param coordType - Specifies if the coordinates are relative to the screen
- * or to the parent window (see constants declared in
- * nsIAccessibleCoordinateType).
- */
- void getCharacterExtents (in long offset,
- out long x,
- out long y,
- out long width,
- out long height,
- in unsigned long coordType);
- void getRangeExtents (in long startOffset,
- in long endOffset,
- out long x,
- out long y,
- out long width,
- out long height,
- in unsigned long coordType);
- /**
- * Get the text offset at the given point, or return -1
- * if no character exists at that point
- *
- * @param x - The position's x value for which to look up the index of the
- * character that is rendered on to the display at that point.
- * @param y - The position's y value for which to look up the index of the
- * character that is rendered on to the display at that point.
- * @param coordType - Screen coordinates or window coordinates (see constants
- * declared in nsIAccessibleCoordinateType).
- * @return offset - Index of the character under the given point or -1 if
- * the point is invalid or there is no character under
- * the point.
- */
- long getOffsetAtPoint (in long x, in long y,
- in unsigned long coordType);
- void getSelectionBounds (in long selectionNum,
- out long startOffset,
- out long endOffset);
- /**
- * Set the bounds for the given selection range
- */
- void setSelectionBounds (in long selectionNum,
- in long startOffset,
- in long endOffset);
- void addSelection (in long startOffset, in long endOffset);
- void removeSelection (in long selectionNum);
- /**
- * Makes a specific part of string visible on screen.
- *
- * @param startIndex 0-based character offset
- * @param endIndex 0-based character offset - the offset of the
- * character just past the last character of the
- * string
- * @param scrollType defines how to scroll (see nsIAccessibleScrollType for
- * available constants)
- */
- void scrollSubstringTo(in long startIndex, in long endIndex,
- in unsigned long scrollType);
- /**
- * Moves the top left of a substring to a specified location.
- *
- * @param startIndex 0-based character offset
- * @param endIndex 0-based character offset - the offset of the
- * character just past the last character of
- * the string
- * @param coordinateType specifies the coordinates origin (for available
- * constants refer to nsIAccessibleCoordinateType)
- * @param x defines the x coordinate
- * @param y defines the y coordinate
- */
- void scrollSubstringToPoint(in long startIndex, in long endIndex,
- in unsigned long coordinateType,
- in long x, in long y);
- /**
- * Return a range that encloses this text control or otherwise the document
- * this text accessible belongs to.
- */
- readonly attribute nsIAccessibleTextRange enclosingRange;
- /**
- * Return an array of disjoint ranges for selected text within the text control
- * or otherwise the document this accessible belongs to.
- */
- readonly attribute nsIArray selectionRanges;
- /**
- * Return an array of disjoint ranges of visible text within the text control
- * or otherwise the document this accessible belongs to.
- */
- readonly attribute nsIArray visibleRanges;
- /**
- * Return a range containing the given accessible.
- */
- nsIAccessibleTextRange getRangeByChild(in nsIAccessible child);
- /**
- * Return a range containing an accessible at the given point.
- */
- nsIAccessibleTextRange getRangeAtPoint(in long x, in long y);
- };
- /*
- Assumptions:
- Using wstring (UCS2) instead of string encoded in UTF-8.
- Multibyte encodings (or at least potentially multi-byte
- encodings) would be preferred for the reasons cited above.
- The following methods will throw an exception on failure
- (since not every text component will allow every operation):
- setSelectionBounds, addSelection, removeSelection, setCaretOffset.
- we assume that all text components support the idea of
- a caret offset, whether visible or "virtual". If this
- isn't the case, caretOffset can be made readonly and
- a setCaretOffset method provided which throws an exception
- on failure (as with *selection methods above).
- */
|