other-licenses/ia2/AccessibleText.idl

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /*************************************************************************
     2  *
     3  *  File Name (AccessibleText.idl)
     4  * 
     5  *  IAccessible2 IDL Specification 
     6  * 
     7  *  Copyright (c) 2007, 2013 Linux Foundation 
     8  *  Copyright (c) 2006 IBM Corporation 
     9  *  Copyright (c) 2000, 2006 Sun Microsystems, Inc. 
    10  *  All rights reserved. 
    11  *   
    12  *   
    13  *  Redistribution and use in source and binary forms, with or without 
    14  *  modification, are permitted provided that the following conditions 
    15  *  are met: 
    16  *   
    17  *   1. Redistributions of source code must retain the above copyright 
    18  *      notice, this list of conditions and the following disclaimer. 
    19  *   
    20  *   2. Redistributions in binary form must reproduce the above 
    21  *      copyright notice, this list of conditions and the following 
    22  *      disclaimer in the documentation and/or other materials 
    23  *      provided with the distribution. 
    24  *
    25  *   3. Neither the name of the Linux Foundation nor the names of its 
    26  *      contributors may be used to endorse or promote products 
    27  *      derived from this software without specific prior written 
    28  *      permission. 
    29  *   
    30  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
    31  *  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
    32  *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
    33  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
    34  *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
    35  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    36  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
    37  *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
    38  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
    39  *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
    40  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
    41  *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
    42  *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
    43  *   
    44  *  This BSD License conforms to the Open Source Initiative "Simplified 
    45  *  BSD License" as published at: 
    46  *  http://www.opensource.org/licenses/bsd-license.php 
    47  *   
    48  *  IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 
    49  *  mark may be used in accordance with the Linux Foundation Trademark 
    50  *  Policy to indicate compliance with the IAccessible2 specification. 
    51  * 
    52  ************************************************************************/ 
    54 import "objidl.idl";
    55 import "oaidl.idl";
    56 import "oleacc.idl";
    57 import "IA2CommonTypes.idl";
    59 /** A structure containing a substring and the start and end offsets in the enclosing string.
    61  IAccessibleText::newText and IAccessibleText::oldText return this struct.
    62 */
    63 typedef struct IA2TextSegment {
    64   BSTR text;	///< A copy of a segment of text taken from an enclosing paragraph.
    65   long start;	///< Index of the first character of the segment in the enclosing text.  
    66   long end;		///< Index of the character following the last character of the segment in the enclosing text. 
    67 } IA2TextSegment;
    69 /** This enum defines values which specify a text boundary type.
    71  IA2_TEXT_BOUNDARY_SENTENCE is optional.  When a method doesn't implement this 
    72  method it must return S_FALSE.  Typically this feature would not be implemented
    73  by an application.  However, if the application developer was not satisfied with
    74  how screen readers have handled the reading of sentences this boundary type
    75  could be implemented and screen readers could use the application's version of a 
    76  sentence rather than the screen reader's.
    78  The rest of the boundary types must be supported.
    80  This enum is used in IAccessibleText::textBeforeOffset, IAccessibleText::textAtOffset,
    81  and IAccessibleText::textAfterOffset.
    82 */
    84 enum IA2TextBoundaryType {
    85   IA2_TEXT_BOUNDARY_CHAR,       /**< Typically, a single character is returned.  In some cases more than
    86                                  one character is returned, for example, when a document contains field
    87                                  data such as a field containing a date, time, or footnote reference.
    88                                  In this case the caret can move over several characters in one movement
    89                                  of the caret.  Note that after the caret moves, the caret offset changes
    90                                  by the number of characters in the field, e.g. by 8 characters in the 
    91                                  following date: 03/26/07. */
    92   IA2_TEXT_BOUNDARY_WORD,       /**< The range provided matches the range observed when the application
    93                                  processes the Ctrl + left arrow and Ctrl + right arrow key sequences.
    94                                  Typically this is from the start of one word to the start of the next, but
    95                                  various applications are inconsistent in the handling of the end of a line. */
    96   IA2_TEXT_BOUNDARY_SENTENCE,   ///< Range is from start of one sentence to the start of another sentence.
    97   IA2_TEXT_BOUNDARY_PARAGRAPH,  ///< Range is from start of one paragraph to the start of another paragraph.
    98   IA2_TEXT_BOUNDARY_LINE,       /**< Range is from start of one line to the start of another line. This
    99                                  often means that an end-of-line character will appear at the end of the
   100                                  range. However in the case of some applications an end-of-line character
   101                                  indicates the end of a paragraph and the lines composing the paragraph,
   102                                  other than the last line, do not contain an end of line character. */
   103   IA2_TEXT_BOUNDARY_ALL         ///< Using this value will cause all text to be returned.
   104 };
   106 /** @brief This interface gives read-only access to text.
   108  The %IAccessibleText interface should be implemented by all components 
   109   that present textual information on the display like  buttons, 
   110   text entry fields, or text portions of the document window.  The interface 
   111   provides access to the text's content, attributes, and spatial location.  
   112   However, text can not be modified with this interface.  That is the task 
   113   of the IAccessibleEditableText interface.
   115  The text length, i.e. the number of characters in the text, is
   116   returned by IAccessibleText::nCharacters. All methods that operate 
   117   on particular characters (e.g. IAccessibleText::textAtOffset) use character 
   118   indices from 0 to length-1. All methods that operate on character positions 
   119   (e.g. IAccessibleText::text) use indices from 0 to length.
   121  Please note that accessible text does not necessarily support selection.  
   122   In this case it should behave as if there where no selection.  An empty 
   123   selection is used for example to express the current cursor position.
   125  Refer to @ref _specialOffsets 
   126   "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   127   for information about special offsets that can be used in %IAccessibleText methods.
   129  E_FAIL is returned in the following cases
   130  @li endOffset < startOffset
   131  @li endoffset > length
   132 */
   133 [object, uuid(24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B)]
   134 interface IAccessibleText : IUnknown
   135 {
   137   /** @brief Adds a text selection
   138    @param [in] startOffset
   139     Starting offset ( 0 based).
   140    @param [in] endOffset
   141     Offset of first character after new selection (0 based).
   142    @retval S_OK
   143    @retval E_INVALIDARG if bad [in] passed
   144    @note  Refer to @ref _specialOffsets 
   145     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   146     for information about special offsets that can be used in %IAccessibleText methods.
   147   */
   148   HRESULT addSelection
   149     (
   150      [in] long startOffset,
   151      [in] long endOffset
   152     );
   154   /** @brief Returns text attributes.
   155    @param [in] offset
   156     Text offset (0 based).  Refer to @ref _specialOffsets 
   157     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   158     for information about special offsets that can be used in %IAccessibleText methods.
   159    @param [out] startOffset    
   160     The starting offset of the character range over which all text attributes match 
   161     those of offset. (0 based)
   162    @param [out] endOffset    
   163     The offset of the first character past the character range over which all text 
   164     attributes match those of offset. (0 based)
   165    @param [out] textAttributes  
   166     A string of attributes describing the text.  The attributes are described in the
   167     <a href="http://www.linuxfoundation.org/en/Accessibility/IAccessible2/TextAttributes">
   168     text attributes specification</a> on the %IAccessible2 web site.
   169    @retval S_OK
   170    @retval S_FALSE if there is nothing to return, [out] values are 0s and NULL respectively 
   171    @retval E_INVALIDARG if bad [in] passed
   172   */
   173   [propget] HRESULT attributes
   174     (
   175      [in] long offset,	
   176      [out] long *startOffset,
   177      [out] long *endOffset,	
   178      [out, retval] BSTR *textAttributes
   179     );
   181   /** @brief Returns the position of the caret.
   183    Returns the 0-based offset of the caret within the text.  If the text is 
   184    implemented as a tree of text objects with embed characters in higher levels
   185    representing substrings of child text objects and the caret is in one of the 
   186    child text objects, then the offset in the higher level text object would be
   187    at the embed character representing child text object that contains the caret.
   189    For example, if the string "one two three" is implemented as a two text objects,
   190    with a top level text object containing an embed character "one ? three" and a
   191    child text object containing "two" and if the caret is in the descendant object
   192    just before the 'o' in "two", then:
   193    <ul>
   194    <li>the caretOffset for the "one ? three" object would be 4, matching the embed character</li>
   195    <li>the caretOffset for "two" would be 2, matching the "o"</li>
   196    </ul>
   197    The caret position/offset is that of the character logically following it, e.g.
   198    to the right of it in a left to right language, or to the left of it in a right
   199    to left language.
   200    @param [out] offset
   201     The returned offset is relative to the text represented by this object.
   202    @retval S_OK
   203    @retval S_FALSE if the caret is not currently active on this object, i.e. the
   204     caret is located on some other object.  The returned offset value will be -1.
   205    @note S_FALSE (and an offset of -1) will not be returned if the caret is somewhere
   206    in the text object or one of its descendants. 
   207   */
   208   [propget] HRESULT caretOffset
   209     (
   210      [out, retval] long *offset
   211     );
   214   /** @brief Returns the bounding box of the specified position.
   216    The virtual character after the last character of the represented
   217     text, i.e. the one at position length is a special case. It represents the 
   218     current input position and will therefore typically be queried by AT more 
   219     often than other positions.  Because it does not represent an existing character 
   220     its bounding box is defined in relation to preceding characters.  It should be 
   221     roughly equivalent to the bounding box of some character when inserted at the 
   222     end of the text.  Its height typically being the maximal height of all the
   223     characters in the text or the height of the preceding character, its width being 
   224     at least one pixel so that the bounding box is not degenerate.
   226    Note that the index 'length' is not always valid.  Whether it is or not is 
   227     implementation dependent.  It typically is when text is editable or otherwise 
   228     when on the screen the caret can be placed behind the text.  You can be sure 
   229     that the index is valid after you have received a ::IA2_EVENT_TEXT_CARET_MOVED
   230     event for this index.
   231    @param [in] offset
   232     Index of the character for which to return its bounding box. The valid range 
   233     is 0..length.  Refer to @ref _specialOffsets 
   234     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   235     for information about special offsets that can be used in %IAccessibleText methods.
   236    @param [in] coordType
   237     Specifies if the coordinates are relative to the screen or to the parent window.
   238    @param [out] x
   239     X coordinate of the top left corner of the bounding box of the referenced character. 
   240    @param [out] y
   241     Y coordinate of the top left corner of the bounding box of the referenced character. 
   242    @param [out] width
   243     Width of the bounding box of the referenced character. 
   244    @param [out] height
   245     Height of the bounding box of the referenced character. 
   246    @retval S_OK
   247    @retval E_INVALIDARG if bad [in] passed
   248   */
   249   [propget] HRESULT characterExtents
   250     (
   251      [in] long offset,
   252      [in] enum IA2CoordinateType coordType,
   253      [out] long *x,
   254      [out] long *y,
   255      [out] long *width,
   256      [out, retval] long *height
   257     );
   260   /** @brief Returns the number of active non-contiguous selections
   261    @param [out] nSelections
   262    @retval S_OK
   263   */
   264   [propget] HRESULT nSelections
   265     (
   266      [out, retval] long *nSelections
   267     );
   269   /** @brief Returns the text position for the specified screen position.
   271    Given a point return the zero-based index of the character under that
   272    point.  The same functionality could be achieved by using the bounding
   273    boxes for each character as returned by IAccessibleText::characterExtents.
   274    The method IAccessibleText::offsetAtPoint, however, can be implemented 
   275    more efficiently.
   277    @param [in] x
   278     The position's x value for which to look up the index of the character that
   279     is rendered on to the display at that point.
   280    @param [in] y
   281     The position's y value for which to look up the index of the character that
   282     is rendered on to the display at that point.            
   283    @param [in] coordType
   284     Screen coordinates or window coordinates.
   285    @param [out] offset
   286     Index of the character under the given point or -1 if the point
   287     is invalid or there is no character under the point.
   288    @retval S_OK
   289    @retval S_FALSE if nothing to return, [out] value is -1
   291    @retval E_INVALIDARG if bad [in] passed
   292     */
   293   [propget] HRESULT offsetAtPoint
   294     (
   295      [in] long x,
   296      [in] long y,
   297      [in] enum IA2CoordinateType coordType,
   298      [out, retval] long *offset
   299     );
   301   /** @brief Returns the character offsets of Nth active text selection
   303    Returns the 0-based starting and ending offsets of the Nth selection.  If the
   304    text is implemented as a tree of text objects with embed characters in higher
   305    levels representing substrings of child text objects, consider the following.
   306    If the starting selection offset is in one of the child text objects, then the
   307    starting offset in the higher level text object would be at the embed character
   308    representing the child text object that contains the starting selection offset.
   309    If the ending selection offset is in one of the child text objects, then the
   310    ending offset in the higher level text object would be just after the embed
   311    character representing the child text object that contains the ending selection
   312    offset.
   314    For example, if the string "one two three" is implemented as a two text objects,
   315    with a top level text object containing an embed character "one ? three" and a
   316    child text object containing "two" and if the selection is the string "two" then:
   317    <ul>
   318    <li>the startOffset for the "one ? three" object would be 4, matching the embed character and the endOffset would be 5.</li>
   319    <li>the startOffset for the "two" object would be 0, and the endOffset would be 3</li>
   320    </ul>
   321    Selection offsets are that of the character logically following it, e.g.
   322    to the right of it in a left to right language or to the left of it in a right to left language.
   323    @param [in] selectionIndex
   324     Index of selection (0 based).
   325    @param [out] startOffset
   326     0 based offset of first selected character
   327    @param [out] endOffset
   328     0 based offset of one past the last selected character.
   329    @retval S_OK
   330    @retval E_INVALIDARG if bad [in] passed
   331   */
   332   [propget] HRESULT selection
   333     (
   334      [in] long selectionIndex,
   335      [out] long *startOffset,
   336      [out, retval] long *endOffset
   337     );
   339   /** @brief Returns the substring between the two given indices.
   341    The substring starts with the character at startOffset (inclusive) and up to 
   342     the character at endOffset (exclusive), if startOffset is less or equal 
   343     endOffset.  If endOffset is lower than startOffset, the result is the same 
   344     as a call with the two arguments being exchanged.
   346    The whole text can be requested by passing the indices zero and 
   347     IAccessibleText::nCharacters. If both indices have the same value, an empty 
   348     string is returned.
   349    @param [in] startOffset
   350     Index of the first character to include in the returned string. The valid range 
   351     is 0..length.
   352    @param [in] endOffset
   353     Index of the last character to exclude in the returned string. The valid range 
   354     is 0..length.
   355    @param [out] text
   356     Returns the substring starting with the character at startOffset (inclusive) 
   357     and up to the character at endOffset (exclusive), if startOffset is less than 
   358     or equal to endOffset.
   359    @retval S_OK
   360    @retval E_INVALIDARG if bad [in] passed
   361    @note
   362    @li The returned string may be longer than endOffset-startOffset bytes if text 
   363     contains multi-byte characters.
   364    @li Refer to @ref _specialOffsets 
   365     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   366     for information about special offsets that can be used in %IAccessibleText methods.
   367   */
   368   [propget] HRESULT text
   369     (
   370      [in] long startOffset,
   371      [in] long endOffset,
   372      [out, retval] BSTR *text
   373     );
   375   /** @brief Returns a text portion before the given position.
   377    Returns the substring of the specified text type that is located before the 
   378     given character and does not include it. The result of this method should be 
   379     same as a result for IAccessibleText::textAtOffset with a suitably decreased 
   380     index value.
   382    For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete 
   383     word that is closest to and located before offset is returned.
   385    If the index is valid, but no text is found, S_FALSE is returned along with out
   386     values of 0, 0, and a NULL pointer.  This would happen for boundary types other
   387     than character when the text consists entirely of whitespace.
   389    @param [in] offset
   390     Index of the character for which to return the text part before it.  The index 
   391     character will not be part of the returned string. The valid range is 0..length.
   392     Refer to @ref _specialOffsets 
   393     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   394     for information about special offsets that can be used in %IAccessibleText methods.
   395    @param [in] boundaryType
   396     The type of the text portion to return.  See ::IA2TextBoundaryType for the 
   397     complete list.
   398    @param [out] startOffset
   399     0 based offset of first character.
   400    @param [out] endOffset
   401     0 based offset of one past the last character.
   402    @param [out] text
   403     Returns the requested text portion.  This portion may be empty or invalid when 
   404     no appropriate text portion is found or text type is invalid.
   405    @retval S_OK
   406    @retval S_FALSE if the requested boundary type is not implemented, such as 
   407     ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; 
   408     [out] values are 0s and NULL respectively 
   409    @retval E_INVALIDARG if bad [in] passed
   410   */
   411   [propget] HRESULT textBeforeOffset
   412     (
   413      [in] long offset,
   414      [in] enum IA2TextBoundaryType boundaryType,
   415      [out] long *startOffset,
   416      [out] long *endOffset,
   417      [out, retval] BSTR *text
   418     );
   420   /** @brief Returns a text portion after the given position.
   422    Returns the substring of the specified text type that is located after the 
   423     given character and does not include it. The result of this method should be 
   424     same as a result for IAccessibleText::textAtOffset with a suitably increased 
   425     index value.
   427    For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete 
   428     word that is closest to and located after offset is returned.
   430    If the index is valid, but no text is found, S_FALSE is returned along with out
   431     values of 0, 0, and a NULL pointer.  This would happen for boundary types other
   432     than character when the text consists entirely of whitespace.
   434    @param [in] offset
   435     Index of the character for which to return the text part after it.  The index 
   436     character will not be part of the returned string. The valid range is 0..length.
   437     Refer to @ref _specialOffsets 
   438     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   439     for information about special offsets that can be used in %IAccessibleText methods.
   440    @param [in] boundaryType
   441     The type of the text portion to return.  See ::IA2TextBoundaryType for the complete 
   442     list.
   443    @param [out] startOffset
   444     0 based offset of first character.
   445    @param [out] endOffset
   446     0 based offset of one past the last character.
   447    @param [out] text
   448     Returns the requested text portion.  This portion may be empty or invalid when 
   449     no appropriate text portion is found or text type is invalid.
   450    @retval S_OK
   451    @retval S_FALSE if the requested boundary type is not implemented, such as 
   452     ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; 
   453     [out] values are 0s and NULL respectively 
   454    @retval E_INVALIDARG if bad [in] passed
   455   */
   456   [propget] HRESULT textAfterOffset
   457     (
   458      [in] long offset,
   459      [in] enum IA2TextBoundaryType boundaryType,
   460      [out] long *startOffset,
   461      [out] long *endOffset,
   462      [out, retval] BSTR *text
   463     );
   465   /** @brief Returns a text portion that spans the given position.
   467    Returns the substring defined by the specified boundary type at the specified
   468     offset.  Refer to IA2TextBoundaryType for more details.
   470    For the word boundary type the returned string will contain the word at the
   471     offset if the offset is inside a word and will contain the word before the
   472     offset if the offset is not inside a word.  All offsets from the first to the
   473     last characters of a word are considered inside the word.  Boundary types of
   474     sentence and paragraph should exhibit similar behavior.
   476    If the index is valid, but no text is found, S_FALSE is returned along with out
   477     values of 0, 0, and a NULL pointer.  This would happen for boundary types other
   478     than character when the text consists entirely of whitespace.
   480    @param [in] offset
   481     Index of the character for which to return the text part it belongs to.  The valid
   482     range is 0..length.
   483     Refer to @ref _specialOffsets 
   484     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   485     for information about special offsets that can be used in %IAccessibleText methods.
   486    @param [in] boundaryType
   487     The type of the text portion to return.  See ::IA2TextBoundaryType for the complete 
   488     list.
   489    @param [out] startOffset
   490     0 based offset of first character.
   491    @param [out] endOffset
   492     0 based offset of one past the last character.
   493    @param [out] text
   494     Returns the requested text portion.  This portion may be empty or invalid when 
   495     no appropriate text portion is found or text type is invalid.
   496    @retval S_OK
   497    @retval S_FALSE if the requested boundary type is not implemented, such as 
   498     ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; 
   499     [out] values are 0s and NULL respectively 
   500    @retval E_INVALIDARG if bad [in] passed
   501   */
   502   [propget] HRESULT textAtOffset
   503     (
   504      [in] long offset,
   505      [in] enum IA2TextBoundaryType boundaryType,
   506      [out] long *startOffset,
   507      [out] long *endOffset,
   508      [out, retval] BSTR *text
   509     );
   511   /** @brief Unselects a range of text.
   512    @param [in] selectionIndex
   513     Index of selection to remove (0 based).
   514    @retval S_OK
   515    @retval E_INVALIDARG if bad [in] passed
   516   */
   517   HRESULT removeSelection
   518     (
   519      [in] long selectionIndex
   520     );
   522   /** @brief Sets the position of the caret.
   524    The caret position/offset is that of the character logically following it,
   525    e.g. to the right of it in a left to right language.
   527    Setting the caret position may or may not alter the current selection.  A 
   528     change of the selection is notified to the accessibility event listeners with 
   529     an ::IA2_EVENT_TEXT_SELECTION_CHANGED event.
   531    When the new caret position differs from the old one (which, of course, is the 
   532     standard case) this is notified to the accessibility event listeners with an
   533     ::IA2_EVENT_TEXT_CARET_MOVED event.
   534    @param [in] offset
   535     The new index of the caret.  This caret is actually placed to the left side of 
   536     the character with that index.  An index of 0 places the caret so that the next 
   537     insertion goes before the first character.  An index of IAccessibleText::nCharacters 
   538     leads to insertion after the last character.  Refer to @ref _specialOffsets 
   539     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   540     for information about special offsets that can be used in %IAccessibleText methods.
   541    @retval S_OK
   542    @retval E_FAIL if the caret cannot be set
   543    @retval E_INVALIDARG if bad [in] passed
   544   */
   545   HRESULT setCaretOffset
   546     (
   547      [in] long offset
   548     );
   550   /** @brief Changes the bounds of an existing selection.
   551    @param [in] selectionIndex
   552     Index of selection to change (0 based)
   553    @param [in] startOffset
   554     New starting offset (0 based)
   555    @param [in] endOffset
   556     New ending offset (0 based) - the offset of the character just past the last character of the selection.
   557    @retval S_OK
   558    @retval E_INVALIDARG if bad [in] passed
   559    @note Refer to @ref _specialOffsets 
   560     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   561     for information about special offsets that can be used in %IAccessibleText methods.
   562   */
   563   HRESULT setSelection
   564     (
   565      [in] long selectionIndex,
   566      [in] long startOffset,
   567      [in] long endOffset
   568     );
   570   /** @brief Returns total number of characters.
   572    Note that this may be different than the total number of bytes required to store the 
   573     text, if the text contains multi-byte characters.
   574    @param [out] nCharacters
   575    @retval S_OK
   576   */
   577   [propget] HRESULT nCharacters
   578     (
   579      [out, retval] long *nCharacters
   580     );
   582   /** @brief Makes a specific part of string visible on screen.
   583    @param [in] startIndex
   584     0 based character offset.
   585    @param [in] endIndex
   586     0 based character offset - the offset of the character just past the last character of the string.
   587    @param [in] scrollType
   588     Defines where the object should be placed on the screen.
   589    @retval S_OK
   590    @retval E_INVALIDARG if bad [in] passed
   591    @note Refer to @ref _specialOffsets 
   592     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   593     for information about special offsets that can be used in %IAccessibleText methods.
   594   */
   595   HRESULT scrollSubstringTo
   596     (
   597      [in] long startIndex,
   598      [in] long endIndex,
   599      [in] enum IA2ScrollType scrollType
   600     );
   602   /** @brief Moves the top left of a substring to a specified location.
   604    @param [in] startIndex
   605     0 based character offset.
   606    @param [in] endIndex
   607     0 based character offset - the offset of the character just past the last character of the string.
   608    @param [in] coordinateType
   609     Specifies whether the coordinates are relative to the screen or the parent object.
   610    @param [in] x
   611     Defines the x coordinate.
   612    @param [in] y
   613     Defines the y coordinate.
   614    @retval S_OK
   615    @retval S_FALSE if the object is already at the specified location.
   616    @retval E_INVALIDARG if bad [in] passed
   617    @note Refer to @ref _specialOffsets 
   618     "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 
   619     for information about special offsets that can be used in %IAccessibleText methods.
   620   */
   621   HRESULT scrollSubstringToPoint
   622     (
   623      [in] long startIndex,
   624      [in] long endIndex,
   625      [in] enum IA2CoordinateType coordinateType,
   626      [in] long x,
   627      [in] long y 
   628     );
   630   /** @brief Returns any inserted text.
   632    Provided for use by the ::IA2_EVENT_TEXT_INSERTED and ::IA2_EVENT_TEXT_UPDATED 
   633     event handlers.
   635    This data is only guaranteed to be valid while the thread notifying the event 
   636    continues. Once the handler has returned, the validity of the data depends on 
   637    how the server manages the life cycle of its objects. Also, note that the server 
   638    may have different life cycle management strategies for controls depending on 
   639    whether or not a control manages its children. Lists, trees, and tables can have 
   640    a large number of children and thus it's possible that the child objects for those 
   641    controls would only be created as needed. Servers should document their life cycle 
   642    strategy as this will be of interest to assistive technology or script engines 
   643    accessing data out of process or from other threads. Servers only need to save the 
   644    last inserted block of text and a scope of the entire application is adequate.
   646    @param [out] newText
   647     The text that was just inserted.
   648    @retval S_OK
   649    @retval S_FALSE If there is nothing to return, the values of IA2TextSegment
   650     struct are set as follows:  text = NULL, start = 0, end = 0.
   652   */
   653   [propget] HRESULT newText
   654     (
   655      [out, retval] IA2TextSegment *newText
   656     );
   658   /** @brief Returns any removed text.
   660    Provided for use by the IA2_EVENT_TEXT_REMOVED/UPDATED event handlers.
   662    This data is only guaranteed to be valid while the thread notifying the event 
   663    continues. Once the handler has returned, the validity of the data depends on 
   664    how the server manages the life cycle of its objects. Also, note that the server 
   665    may have different life cycle management strategies for controls depending on 
   666    whether or not a control manages its children. Lists, trees, and tables can have 
   667    a large number of children and thus it's possible that the child objects for those 
   668    controls would only be created as needed. Servers should document their life cycle 
   669    strategy as this will be of interest to assistive technology or script engines 
   670    accessing data out of process or from other threads. Servers only need to save the 
   671    last removed block of text and a scope of the entire application is adequate.
   673    @param [out] oldText
   674     The text that was just removed.
   675    @retval S_OK
   676    @retval S_FALSE If there is nothing to return, the values of IA2TextSegment
   677     struct are set as follows:  text = NULL, start = 0, end = 0.
   678   */
   679   [propget] HRESULT oldText
   680     (
   681      [out, retval] IA2TextSegment *oldText
   682     );
   684 }

mercurial