1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
/*************************************************************************
*
* File Name (accessibleTextSelectionContainer.idl)
*
* IAccessible2 IDL Specification
*
* Copyright (c) 2007, 2022 Linux Foundation
* Copyright (c) 2006 IBM Corporation
* Copyright (c) 2000, 2006 Sun Microsystems, Inc.
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the Linux Foundation nor the names of its
* contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This BSD License conforms to the Open Source Initiative "Simplified
* BSD License" as published at:
* http://www.opensource.org/licenses/bsd-license.php
*
* IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
* mark may be used in accordance with the Linux Foundation Trademark
* Policy to indicate compliance with the IAccessible2 specification.
*
************************************************************************/
import "objidl.idl";
import "oaidl.idl";
import "oleacc.idl";
import "AccessibleText.idl";
/**
This structure represents a single text selection within an accessibility
subtree. This could be within a document, or the subtree of a document. This
selection is defined by two points in the content, where each one is defined by
an accessible object supporting the IAccessibleTextInterface and an
IAccessibleText character offset relative to it.
The end object must appear after the start object in the accessibility tree,
i.e. the end object must be reachable from the start object by navigating
forward (next, first child etc).
This struct also contains a `startIsActive` boolean, to communicate if the
start of the selection is the active point or not.
The active point corresponds to the user's focus or point of interest. The user
moves the active point to expand or collapse the range. The anchor point is
the other point of the range and typically remains constant. In most cases,
anchor is the start of the range and active is the end. However, when selecting
backwards (e.g. pressing shift+left arrow in a text field), the start of the
range is the active point, as the user moves this to manipulate the selection.
*/
typedef struct IA2TextSelection {
IAccessibleText* startObj;
long startOffset;
IAccessibleText* endObj;
long endOffset;
boolean startIsActive;
} IA2TextSelection;
/**
@brief an interface to get and set text selections in a document.
this interface can be supported on any object that also supports the
IAccessibleText and/or IAccessibleHypertext interfaces. This could be a
document, any subtree of a document, or a text input control.
*/
[object, uuid(2118B599-733F-43D0-A569-0B31D125ED9A)]
interface IAccessibleTextSelectionContainer : IUnknown
{
/**
@brief Returns an array of selections within this subtree.
@param [out] selections
The array of selections, allocated by the server. The client must free it
with CoTaskMemFree. The selections returned will be cropped to fit entirely
within this subtree, i.e. to only reference descendant objects, even if the
physical selection may reach outside of this subtree. In the case where the
physical selection is entirely outside the subtree, an empty array will be
returned.
@param [out] nSelections
the array length
@retval S_OK
@retval S_FALSE returned if there are no selections within this subtree, or
the physical selection is entirely outside of this subtree.
*/
[propget] HRESULT selections
(
[out, size_is(,*nSelections)] IA2TextSelection **selections,
[out, retval] long *nSelections
);
/**
@brief makes 1 or more selections within this subtree denoted by the given
array of IA2TextSelections.
Any existing physical selection (inside or outside this subtree) is replaced
by the new selections. All objects within the given selection ranges must be
descendants of this subtree, otherwise E_INVALIDARG will be returned.
@param [in] nSelections
The length of the array containing the selection ranges.
@param [in] selections
The array of selection ranges.
@retval S_OK Returned if the selections were made successfully.
@retval S_FALSE Returned if the selections could not be made.
@retval E_INVALIDARG Returned if any of the input arguments are invalid, or
any of the objects in the given ranges are outside of this subtree.
*/
HRESULT setSelections
(
[in] long nSelections,
[in, size_is(nSelections)] IA2TextSelection* selections
);
}
|