Add support for i18n-title.
[chromium-blink-merge.git] / third_party / iaccessible2 / ia2_api_all.idl
blob564c920b7d30d1a8959ee1ae2a462f369727d0fa
1 /*************************************************************************
3 * File Name (IA2CommonTypes.idl)
4 *
5 * IAccessible2 IDL Specification
6 *
7 * Copyright (c) 2007, 2010 Linux Foundation
8 * Copyright (c) 2006 IBM Corporation
9 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
10 * All rights reserved.
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
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.
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.
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.
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
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.
52 ************************************************************************/
54 /** These constants control the scrolling of an object or substring into a window.
56 This enum is used in IAccessible2::scrollTo and IAccessibleText::scrollSubstringTo.
58 enum IA2ScrollType {
60 /** Scroll the top left corner of the object or substring such that the top left
61 corner (and as much as possible of the rest of the object or substring) is within
62 the top level window. In cases where the entire object or substring fits within
63 the top level window, the placement of the object or substring is dependent on
64 the application. For example, the object or substring may be scrolled to the
65 closest edge, the furthest edge, or midway between those two edges. In cases
66 where there is a hierarchy of nested scrollable controls, more than one control
67 may have to be scrolled.
69 IA2_SCROLL_TYPE_TOP_LEFT,
71 /** Scroll the bottom right corner of the object or substring such that the bottom right
72 corner (and as much as possible of the rest of the object or substring) is within
73 the top level window. In cases where the entire object or substring fits within
74 the top level window, the placement of the object or substring is dependent on
75 the application. For example, the object or substring may be scrolled to the
76 closest edge, the furthest edge, or midway between those two edges. In cases
77 where there is a hierarchy of nested scrollable controls, more than one control
78 may have to be scrolled.
80 IA2_SCROLL_TYPE_BOTTOM_RIGHT,
82 /** Scroll the top edge of the object or substring such that the top edge
83 (and as much as possible of the rest of the object or substring) is within the
84 top level window. In cases where the entire object or substring fits within
85 the top level window, the placement of the object or substring is dependent on
86 the application. For example, the object or substring may be scrolled to the
87 closest edge, the furthest edge, or midway between those two edges. In cases
88 where there is a hierarchy of nested scrollable controls, more than one control
89 may have to be scrolled.
91 IA2_SCROLL_TYPE_TOP_EDGE,
93 /** Scroll the bottom edge of the object or substring such that the bottom edge
94 (and as much as possible of the rest of the object or substring) is within the
95 top level window. In cases where the entire object or substring fits within
96 the top level window, the placement of the object or substring is dependent on
97 the application. For example, the object or substring may be scrolled to the
98 closest edge, the furthest edge, or midway between those two edges. In cases
99 where there is a hierarchy of nested scrollable controls, more than one control
100 may have to be scrolled.
102 IA2_SCROLL_TYPE_BOTTOM_EDGE,
104 /** Scroll the left edge of the object or substring such that the left edge
105 (and as much as possible of the rest of the object or substring) is within the
106 top level window. In cases where the entire object or substring fits within
107 the top level window, the placement of the object or substring is dependent on
108 the application. For example, the object or substring may be scrolled to the
109 closest edge, the furthest edge, or midway between those two edges. In cases
110 where there is a hierarchy of nested scrollable controls, more than one control
111 may have to be scrolled.
113 IA2_SCROLL_TYPE_LEFT_EDGE,
115 /** Scroll the right edge of the object or substring such that the right edge
116 (and as much as possible of the rest of the object or substring) is within the
117 top level window. In cases where the entire object or substring fits within
118 the top level window, the placement of the object or substring is dependent on
119 the application. For example, the object or substring may be scrolled to the
120 closest edge, the furthest edge, or midway between those two edges. In cases
121 where there is a hierarchy of nested scrollable controls, more than one control
122 may have to be scrolled.
124 IA2_SCROLL_TYPE_RIGHT_EDGE,
126 /** Scroll the object or substring such that as much as possible of the
127 object or substring is within the top level window. The placement of
128 the object is dependent on the application. For example, the object or
129 substring may be scrolled to to closest edge, the furthest edge, or midway
130 between those two edges.
132 IA2_SCROLL_TYPE_ANYWHERE
135 /** These constants define which coordinate system a point is located in.
137 This enum is used in IAccessible2::scrollToPoint, IAccessibleImage::imagePosition,
138 IAccessibleText::characterExtents, and IAccessibleText::offsetAtPoint, and
139 IAccessibleText::scrollSubstringToPoint.
141 enum IA2CoordinateType {
143 /// The coordinates are relative to the screen.
144 IA2_COORDTYPE_SCREEN_RELATIVE,
146 /** The coordinates are relative to the upper left corner of the bounding box
147 of the immediate parent.
149 IA2_COORDTYPE_PARENT_RELATIVE
153 /** Special offsets for use in IAccessibleText and IAccessibleEditableText methods
155 Refer to @ref _specialOffsets
156 "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
157 for more information.
159 enum IA2TextSpecialOffsets {
160 IA2_TEXT_OFFSET_LENGTH = -1, /**< This offset is equivalent to the length of the string. It eliminates
161 the need to call IAccessibleText::nCharacters. */
162 IA2_TEXT_OFFSET_CARET = -2 /**< This offset signifies that the text related to the physical location
163 of the caret should be used. */
166 /** These constants specify the kind of change made to a table.
168 This enum is used in the IA2TableModelChange struct which in turn is used by
169 IAccessibleTable::modelChange and IAccessibleTable2::modelChange.
171 enum IA2TableModelChangeType {
172 IA2_TABLE_MODEL_CHANGE_INSERT, // = 0;
173 IA2_TABLE_MODEL_CHANGE_DELETE,
174 IA2_TABLE_MODEL_CHANGE_UPDATE
177 /** A structure defining the type of and extents of changes made to a table
179 IAccessibleTable::modelChange and IAccessibleTable2::modelChange return this struct.
180 In the case of an insertion or change the row and column offsets define the boundaries
181 of the inserted or changed subtable after the operation. In the case of a deletion
182 the row and column offsets define the boundaries of the subtable being removed before
183 the removal.
185 typedef struct IA2TableModelChange {
186 enum IA2TableModelChangeType type; // insert, delete, update
187 long firstRow; ///< 0 based, inclusive
188 long lastRow; ///< 0 based, inclusive
189 long firstColumn; ///< 0 based, inclusive
190 long lastColumn; ///< 0 based, inclusive
191 } IA2TableModelChange;
192 /*************************************************************************
194 * File Name (AccessibleRelation.idl)
196 * IAccessible2 IDL Specification
198 * Copyright (c) 2007, 2010 Linux Foundation
199 * Copyright (c) 2006 IBM Corporation
200 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
201 * All rights reserved.
204 * Redistribution and use in source and binary forms, with or without
205 * modification, are permitted provided that the following conditions
206 * are met:
208 * 1. Redistributions of source code must retain the above copyright
209 * notice, this list of conditions and the following disclaimer.
211 * 2. Redistributions in binary form must reproduce the above
212 * copyright notice, this list of conditions and the following
213 * disclaimer in the documentation and/or other materials
214 * provided with the distribution.
216 * 3. Neither the name of the Linux Foundation nor the names of its
217 * contributors may be used to endorse or promote products
218 * derived from this software without specific prior written
219 * permission.
221 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
222 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
223 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
224 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
225 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
226 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
227 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
228 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
229 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
230 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
231 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
232 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
233 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
235 * This BSD License conforms to the Open Source Initiative "Simplified
236 * BSD License" as published at:
237 * http://www.opensource.org/licenses/bsd-license.php
239 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
240 * mark may be used in accordance with the Linux Foundation Trademark
241 * Policy to indicate compliance with the IAccessible2 specification.
243 ************************************************************************/
245 import "objidl.idl";
246 import "oaidl.idl";
247 import "oleacc.idl";
249 /** @defgroup grpRelations Relations
250 Use the following constants to compare against the BSTRs returned by
251 IAccessibleRelation::relationType.
253 ///@{
255 /** Some attribute of this object is affected by a target object. */
256 const WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy";
258 /** This object is interactive and controls some attribute of a target object. */
259 const WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor";
261 /** This object is described by the target object. */
262 const WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy";
264 /** This object is describes the target object. */
265 const WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor";
267 /** This object is embedded by a target object. */
268 const WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy";
270 /** This object embeds a target object. This relation can be used on the
271 OBJID_CLIENT accessible for a top level window to show where the content
272 areas are.
274 const WCHAR *const IA2_RELATION_EMBEDS = L"embeds";
276 /** Content flows to this object from a target object.
277 This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text
278 objects together in order to allow assistive technology to follow the
279 intended reading order.
281 const WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom";
283 /** Content flows from this object to a target object. */
284 const WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo";
286 /** This object is label for a target object. */
287 const WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor";
289 /** This object is labelled by a target object. Note that the double L spelling
290 which follows is preferred. Please use it instead. This single L version may
291 be removed in a later version.
293 const WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy";
295 /** This object is labelled by a target object. */
296 const WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy";
298 /** This object is a member of a group of one or more objects. When
299 there is more than one object in the group each member may have one and the
300 same target, e.g. a grouping object. It is also possible that each member has
301 multiple additional targets, e.g. one for every other member in the group.
303 const WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf";
305 /** This object is a child of a target object. */
306 const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf";
308 /** This object is a parent window of the target object. */
309 const WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf";
311 /** This object is a transient component related to the target object.
312 When this object is activated the target object doesn't loose focus.
314 const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor";
316 /** This object is a sub window of a target object. */
317 const WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf";
319 ///@}
321 /// This interface gives access to an object's set of relations.
322 [object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)]
323 interface IAccessibleRelation : IUnknown
325 /** @brief Returns the type of the relation.
326 @param [out] relationType
327 The strings returned are defined @ref grpRelations "in this section of the documentation".
328 @retval S_OK
330 [propget] HRESULT relationType
332 [out, retval] BSTR *relationType
335 /** @brief Returns a localized version of the relation type.
336 @param [out] localizedRelationType
337 @retval S_OK
339 [propget] HRESULT localizedRelationType
341 [out, retval] BSTR *localizedRelationType
344 /** @brief Returns the number of targets for this relation.
345 @param [out] nTargets
346 @retval S_OK
348 [propget] HRESULT nTargets
350 [out, retval] long *nTargets
353 /** @brief Returns one accessible relation target.
354 @param [in] targetIndex
355 0 based index
356 @param [out] target
357 @retval S_OK
358 @retval S_FALSE if there is nothing to return, [out] value is NULL
359 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
360 @note Use QueryInterface to get IAccessible2.
362 [propget] HRESULT target
364 [in] long targetIndex,
365 [out, retval] IUnknown **target
368 /** @brief Returns multiple accessible relation targets
369 @param [in] maxTargets
370 maximum size of the array allocated by the client
371 @param [out] targets
372 The array of target objects. Note that this array is to be allocated by the
373 client and freed when no longer needed. Refer to @ref _arrayConsideration
374 "Special Consideration when using Arrays" for more details. You will need to use
375 QueryInterface on the IUnknown to get the IAccessible2.
376 @param [out] nTargets
377 actual number of targets in the returned array (not more than maxTargets)
378 @retval S_OK
379 @retval S_FALSE if there is nothing to return, nTargets is set to 0
381 [propget] HRESULT targets
383 [in] long maxTargets,
384 [out, size_is(maxTargets), length_is(*nTargets)]
385 IUnknown **targets,
386 [out, retval] long *nTargets
390 /*************************************************************************
392 * File Name (AccessibleAction.idl)
394 * IAccessible2 IDL Specification
396 * Copyright (c) 2007, 2010 Linux Foundation
397 * Copyright (c) 2006 IBM Corporation
398 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
399 * All rights reserved.
402 * Redistribution and use in source and binary forms, with or without
403 * modification, are permitted provided that the following conditions
404 * are met:
406 * 1. Redistributions of source code must retain the above copyright
407 * notice, this list of conditions and the following disclaimer.
409 * 2. Redistributions in binary form must reproduce the above
410 * copyright notice, this list of conditions and the following
411 * disclaimer in the documentation and/or other materials
412 * provided with the distribution.
414 * 3. Neither the name of the Linux Foundation nor the names of its
415 * contributors may be used to endorse or promote products
416 * derived from this software without specific prior written
417 * permission.
419 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
420 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
421 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
422 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
423 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
424 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
425 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
426 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
427 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
428 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
429 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
430 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
431 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
433 * This BSD License conforms to the Open Source Initiative "Simplified
434 * BSD License" as published at:
435 * http://www.opensource.org/licenses/bsd-license.php
437 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
438 * mark may be used in accordance with the Linux Foundation Trademark
439 * Policy to indicate compliance with the IAccessible2 specification.
441 ************************************************************************/
443 import "objidl.idl";
444 import "oaidl.idl";
445 import "oleacc.idl";
447 /** @brief This interface gives access to actions that can be executed
448 for accessible objects.
450 Every accessible object that can be manipulated via the native GUI beyond the
451 methods available either in the MSAA IAccessible interface or in the set of
452 IAccessible2 interfaces (other than this IAccessibleAction interface) should
453 support the IAccessibleAction interface in order to provide Assistive Technology
454 access to all the actions that can be performed by the object. Each action can
455 be performed or queried for a name, description or associated key bindings.
456 Actions are needed more for ATs that assist the mobility impaired, such as
457 on-screen keyboards and voice command software. By providing actions directly,
458 the AT can present them to the user without the user having to perform the extra
459 steps to navigate a context menu.
461 The first action should be equivalent to the MSAA default action. If there is
462 only one action, %IAccessibleAction should also be implemented.
464 [object, uuid(B70D9F59-3B5A-4dba-AB9E-22012F607DF5)]
465 interface IAccessibleAction : IUnknown
468 /** @brief Returns the number of accessible actions available in this object.
470 If there are more than one, the first one is considered the
471 "default" action of the object.
472 @param [out] nActions
473 The returned value of the number of actions is zero if there are
474 no actions.
475 @retval S_OK
476 @note This method is missing a [propget] prefix in the IDL. The result is the
477 method is named nActions in generated C++ code instead of get_nActions.
479 HRESULT nActions
481 [out,retval] long* nActions
484 /** @brief Performs the specified Action on the object.
485 @param [in] actionIndex
486 0 based index specifying the action to perform. If it lies outside
487 the valid range no action is performed.
488 @retval S_OK
489 @retval E_INVALIDARG if bad [in] passed
491 HRESULT doAction
493 [in] long actionIndex
496 /** @brief Returns a description of the specified action of the object.
497 @param [in] actionIndex
498 0 based index specifying which action's description to return.
499 If it lies outside the valid range an empty string is returned.
500 @param [out] description
501 The returned value is a localized string of the specified action.
502 @retval S_OK
503 @retval S_FALSE if there is nothing to return, [out] value is NULL
504 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
506 [propget] HRESULT description
508 [in] long actionIndex,
509 [out, retval] BSTR *description
512 /** @brief Returns an array of BSTRs describing one or more key bindings, if
513 there are any, associated with the specified action.
515 The returned strings are the localized human readable key sequences to be
516 used to activate each action, e.g. "Ctrl+Shift+D". Since these key
517 sequences are to be used when the object has focus, they are like
518 mnemonics (access keys), and not like shortcut (accelerator) keys.
520 There is no need to implement this method for single action controls since
521 that would be redundant with the standard MSAA programming practice of
522 getting the mnemonic from get_accKeyboardShortcut.
524 An AT such as an On Screen Keyboard might not expose these bindings but
525 provide alternative means of activation.
527 Note: the client allocates and passes in an array of pointers. The server
528 allocates the BSTRs and passes back one or more pointers to these BSTRs into
529 the array of pointers allocated by the client. The client is responsible
530 for deallocating the BSTRs.
532 @param [in] actionIndex
533 0 based index specifying which action's key bindings should be returned.
534 @param [in] nMaxBindings
535 This parameter is ignored. Refer to @ref _arrayConsideration
536 "Special Consideration when using Arrays" for more details.
537 @param [out] keyBindings
538 An array of BSTRs, allocated by the server, one for each key binding.
539 Free it with CoTaskMemFree.
540 @param [out] nBindings
541 The number of key bindings returned; the size of the returned array.
542 @retval S_OK
543 @retval S_FALSE if there are no relations, [out] values are NULL and 0 respectively
544 @retval E_INVALIDARG if bad [in] passed, [out] values are NULL and 0 respectively
546 [propget] HRESULT keyBinding
548 [in] long actionIndex,
549 [in] long nMaxBindings,
550 [out, size_is(,nMaxBindings), length_is(,*nBindings)] BSTR **keyBindings,
551 [out, retval] long *nBindings
554 /** @brief Returns the non-localized name of specified action.
555 @param [in] actionIndex
556 0 based index specifying which action's non-localized name should be returned.
557 @param [out] name
558 @retval S_OK
559 @retval S_FALSE if there is nothing to return, [out] value is NULL
560 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
562 [propget] HRESULT name
564 [in] long actionIndex,
565 [out, retval] BSTR *name
568 /** @brief Returns the localized name of specified action.
569 @param [in] actionIndex
570 0 based index specifying which action's localized name should be returned.
571 @param [out] localizedName
572 @retval S_OK
573 @retval S_FALSE if there is nothing to return, [out] value is NULL
574 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
576 [propget] HRESULT localizedName
578 [in] long actionIndex,
579 [out, retval] BSTR *localizedName
583 /*************************************************************************
585 * File Name (AccessibleRole.idl)
587 * IAccessible2 IDL Specification
589 * Copyright (c) 2007, 2010 Linux Foundation
590 * Copyright (c) 2006 IBM Corporation
591 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
592 * All rights reserved.
595 * Redistribution and use in source and binary forms, with or without
596 * modification, are permitted provided that the following conditions
597 * are met:
599 * 1. Redistributions of source code must retain the above copyright
600 * notice, this list of conditions and the following disclaimer.
602 * 2. Redistributions in binary form must reproduce the above
603 * copyright notice, this list of conditions and the following
604 * disclaimer in the documentation and/or other materials
605 * provided with the distribution.
607 * 3. Neither the name of the Linux Foundation nor the names of its
608 * contributors may be used to endorse or promote products
609 * derived from this software without specific prior written
610 * permission.
612 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
613 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
614 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
615 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
616 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
617 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
618 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
619 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
620 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
621 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
622 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
623 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
624 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
626 * This BSD License conforms to the Open Source Initiative "Simplified
627 * BSD License" as published at:
628 * http://www.opensource.org/licenses/bsd-license.php
630 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
631 * mark may be used in accordance with the Linux Foundation Trademark
632 * Policy to indicate compliance with the IAccessible2 specification.
634 ************************************************************************/
636 import "objidl.idl";
638 /** Collection of roles
640 This enumerator defines an extended set of accessible roles of objects implementing
641 the %IAccessible2 interface. These roles are in addition to the MSAA roles obtained
642 through the MSAA get_accRole method. Examples are 'footnote', 'heading', and
643 'label'. You obtain an object's %IAccessible2 roles by calling IAccessible2::role.
645 enum IA2Role {
647 /** Unknown role. The object contains some Accessible information, but its
648 role is not known.
650 IA2_ROLE_UNKNOWN = 0,
652 /** An object that can be drawn into and to manage events from the objects
653 drawn into it. Also refer to ::IA2_ROLE_FRAME,
654 ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE.
656 IA2_ROLE_CANVAS = 0x401,
658 /// A caption describing another object.
659 IA2_ROLE_CAPTION,
661 /// Used for check buttons that are menu items.
662 IA2_ROLE_CHECK_MENU_ITEM,
664 /// A specialized dialog that lets the user choose a color.
665 IA2_ROLE_COLOR_CHOOSER,
667 /// A date editor.
668 IA2_ROLE_DATE_EDITOR,
670 /** An iconified internal frame in an ::IA2_ROLE_DESKTOP_PANE.
671 Also refer to ::IA2_ROLE_INTERNAL_FRAME.
673 IA2_ROLE_DESKTOP_ICON,
675 /** A desktop pane. A pane that supports internal frames and iconified
676 versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME.
678 IA2_ROLE_DESKTOP_PANE,
680 /** A directory pane. A pane that allows the user to navigate through
681 and select the contents of a directory. May be used by a file chooser.
682 Also refer to ::IA2_ROLE_FILE_CHOOSER.
684 IA2_ROLE_DIRECTORY_PANE,
686 /** An editable text object in a toolbar.
687 <BR><B>Note:</B> This role has been deprecated. The edit bar role was meant
688 for a text area in a tool bar. However, to detect a text area in a tool bar
689 the AT can query the parent.
691 IA2_ROLE_EDITBAR,
693 /// Embedded (OLE) object.
694 IA2_ROLE_EMBEDDED_OBJECT,
696 /// Text that is used as an endnote (footnote at the end of a chapter or section).
697 IA2_ROLE_ENDNOTE,
699 /** A file chooser. A specialized dialog that displays the files in the
700 directory and lets the user select a file, browse a different directory,
701 or specify a filename. May use the directory pane to show the contents of
702 a directory.
703 Also refer to ::IA2_ROLE_DIRECTORY_PANE.
705 IA2_ROLE_FILE_CHOOSER,
707 /** A font chooser. A font chooser is a component that lets the user pick
708 various attributes for fonts.
710 IA2_ROLE_FONT_CHOOSER,
712 /** Footer of a document page.
713 Also refer to ::IA2_ROLE_HEADER.
715 IA2_ROLE_FOOTER,
717 /// Text that is used as a footnote. Also refer to ::IA2_ROLE_ENDNOTE.
718 IA2_ROLE_FOOTNOTE,
720 /** A container of form controls. An example of the use of this role is to
721 represent an HTML FORM tag.
723 IA2_ROLE_FORM,
725 /** Frame role. A top level window with a title bar, border, menu bar, etc.
726 It is often used as the primary window for an application. Also refer to
727 ::IA2_ROLE_CANVAS and the MSAA roles of dialog and window.
729 IA2_ROLE_FRAME,
731 /** A glass pane. A pane that is guaranteed to be painted on top of all panes
732 beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and
733 ::IA2_ROLE_ROOT_PANE.
735 IA2_ROLE_GLASS_PANE,
737 /** Header of a document page.
738 Also refer to ::IA2_ROLE_FOOTER.
740 IA2_ROLE_HEADER,
742 /// Heading. Use the IAccessible2::attributes heading-level attribute to determine the heading level.
743 IA2_ROLE_HEADING,
745 /// A small fixed size picture, typically used to decorate components.
746 IA2_ROLE_ICON,
748 /** An image map object. Usually a graphic with multiple hotspots, where
749 each hotspot can be activated resulting in the loading of another document
750 or section of a document.
752 IA2_ROLE_IMAGE_MAP,
754 /** An object which is used to allow input of characters not found on a keyboard,
755 such as the input of Chinese characters on a Western keyboard.
757 IA2_ROLE_INPUT_METHOD_WINDOW,
759 /** An internal frame. A frame-like object that is clipped by a desktop pane.
760 The desktop pane, internal frame, and desktop icon objects are often used to
761 create multiple document interfaces within an application.
762 Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME.
764 IA2_ROLE_INTERNAL_FRAME,
766 /// An object used to present an icon or short string in an interface.
767 IA2_ROLE_LABEL,
769 /** A layered pane. A specialized pane that allows its children to be drawn
770 in layers, providing a form of stacking order. This is usually the pane that
771 holds the menu bar as well as the pane that contains most of the visual
772 components in a window.
773 Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE.
775 IA2_ROLE_LAYERED_PANE,
777 /// An embedded note which is not visible until activated.
778 IA2_ROLE_NOTE,
780 /** A specialized pane whose primary use is inside a dialog.
781 Also refer to MSAA's dialog role.
783 IA2_ROLE_OPTION_PANE,
785 /** An object representing a page of document content. It is used in documents
786 which are accessed by the user on a page by page basis.
788 IA2_ROLE_PAGE,
790 /// A paragraph of text.
791 IA2_ROLE_PARAGRAPH,
793 /** A radio button that is a menu item.
794 Also refer to MSAA's button and menu item roles.
796 IA2_ROLE_RADIO_MENU_ITEM,
798 /** An object which is redundant with another object in the accessible hierarchy.
799 ATs typically ignore objects with this role.
801 IA2_ROLE_REDUNDANT_OBJECT,
803 /** A root pane. A specialized pane that has a glass pane and a layered pane
804 as its children.
805 Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_LAYERED_PANE
807 IA2_ROLE_ROOT_PANE,
809 /** A ruler such as those used in word processors.
811 IA2_ROLE_RULER,
813 /** A scroll pane. An object that allows a user to incrementally view a large
814 amount of information. Its children can include scroll bars and a viewport.
815 Also refer to ::IA2_ROLE_VIEW_PORT and MSAA's scroll bar role.
817 IA2_ROLE_SCROLL_PANE,
819 /** A container of document content. An example of the use of this role is to
820 represent an HTML DIV tag. A section may be used as a region. A region is a
821 group of elements that together form a perceivable unit. A region does not
822 necessarily follow the logical structure of the content, but follows the
823 perceivable structure of the page. A region may have an attribute in the set
824 of IAccessible2::attributes which indicates that it is "live". A live region
825 is content that is likely to change in response to a timed change, a user
826 event, or some other programmed logic or event.
828 IA2_ROLE_SECTION,
830 /// Object with graphical representation used to represent content on draw pages.
831 IA2_ROLE_SHAPE,
833 /** A split pane. A specialized panel that presents two other panels at the
834 same time. Between the two panels is a divider the user can manipulate to make
835 one panel larger and the other panel smaller.
837 IA2_ROLE_SPLIT_PANE,
839 /** An object that forms part of a menu system but which can be "undocked"
840 from or "torn off" the menu system to exist as a separate window.
842 IA2_ROLE_TEAR_OFF_MENU,
844 /// An object used as a terminal emulator.
845 IA2_ROLE_TERMINAL,
847 /// Collection of objects that constitute a logical text entity.
848 IA2_ROLE_TEXT_FRAME,
850 /** A toggle button. A specialized push button that can be checked or unchecked,
851 but does not provide a separate indicator for the current state.
852 Also refer to MSAA's roles of push button, check box, and radio button.
853 <BR><B>Note:</B> IA2_ROLE_TOGGLE_BUTTON should not be used. Instead, use MSAA's
854 ROLE_SYSTEM_PUSHBUTTON and STATE_SYSTEM_PRESSED.
856 IA2_ROLE_TOGGLE_BUTTON,
858 /** A viewport. An object usually used in a scroll pane. It represents the
859 portion of the entire data that the user can see. As the user manipulates
860 the scroll bars, the contents of the viewport can change.
861 Also refer to ::IA2_ROLE_SCROLL_PANE.
863 IA2_ROLE_VIEW_PORT
866 /*************************************************************************
868 * File Name (AccessibleStates.idl)
870 * IAccessible2 IDL Specification
872 * Copyright (c) 2007, 2010 Linux Foundation
873 * Copyright (c) 2006 IBM Corporation
874 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
875 * All rights reserved.
878 * Redistribution and use in source and binary forms, with or without
879 * modification, are permitted provided that the following conditions
880 * are met:
882 * 1. Redistributions of source code must retain the above copyright
883 * notice, this list of conditions and the following disclaimer.
885 * 2. Redistributions in binary form must reproduce the above
886 * copyright notice, this list of conditions and the following
887 * disclaimer in the documentation and/or other materials
888 * provided with the distribution.
890 * 3. Neither the name of the Linux Foundation nor the names of its
891 * contributors may be used to endorse or promote products
892 * derived from this software without specific prior written
893 * permission.
895 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
896 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
897 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
898 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
899 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
900 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
901 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
902 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
903 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
904 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
905 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
906 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
907 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
909 * This BSD License conforms to the Open Source Initiative "Simplified
910 * BSD License" as published at:
911 * http://www.opensource.org/licenses/bsd-license.php
913 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
914 * mark may be used in accordance with the Linux Foundation Trademark
915 * Policy to indicate compliance with the IAccessible2 specification.
917 ************************************************************************/
919 import "objidl.idl";
921 typedef long AccessibleStates;
923 /** %IAccessible2 specific state bit constants
925 This enum defines the state bits returned by IAccessible2::states. The
926 %IAccessible2 state bits are in addition to those returned by MSAA.
928 enum IA2States {
930 /** Indicates a window is currently the active window, or is an active subelement
931 within a container or table.
933 This state can be used to indicate the current active item in a container, even
934 if the container itself is not currently active. In other words this would indicate
935 the item that will get focus if you tab to the container.
937 This information is important for knowing what to report for trees and potentially
938 other containers in a virtual buffer.
940 Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
942 IA2_STATE_ACTIVE = 0x1,
944 /** Indicates that the object is armed.
946 Used to indicate that the control is "pressed" and will be invoked when the
947 actuator, e.g. a mouse button, is "released". An AT which either monitors the
948 mouse or synthesizes mouse events might need to know that, and possibly a talking
949 interface would even let the user know about it. It could also potentially be
950 useful to on screen keyboards or test tools since the information does indicate
951 something about the state of the interface, for example, code operating asynchronously
952 might need to wait for the armed state to change before doing something else.
955 IA2_STATE_ARMED = 0x2,
957 /** Indicates the user interface object corresponding to this object no longer exists. */
958 IA2_STATE_DEFUNCT = 0x4,
960 /** Indicates the user can change the contents of this object. */
961 IA2_STATE_EDITABLE = 0x8,
963 /** Indicates the orientation of this object is horizontal. */
964 IA2_STATE_HORIZONTAL = 0x10,
966 /** Indicates this object is minimized and is represented only by an icon. */
967 IA2_STATE_ICONIFIED = 0x20,
969 /** Indicates an input validation failure. */
970 IA2_STATE_INVALID_ENTRY = 0x40,
972 /** Indicates that this object manages its children.
974 Note: Due to the fact that MSAA's WinEvents don't allow the active child index
975 to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages
976 descendants scheme can't be used. Instead the active child object has to fire
977 MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be
978 added to provide for event specific data to be passed with the event. At that
979 time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and
980 IA2_STATE_MANAGES_DESCENDANTS state would be useful.
982 IA2_STATE_MANAGES_DESCENDANTS = 0x80,
984 /** Indicates that an object is modal.
986 Modal objects have the behavior that something must be done with the object
987 before the user can interact with an object in a different window.
989 IA2_STATE_MODAL = 0x100,
991 /** Indicates this text object can contain multiple lines of text. */
992 IA2_STATE_MULTI_LINE = 0x200,
994 /** Indicates this object paints every pixel within its rectangular region. */
995 IA2_STATE_OPAQUE = 0x400,
997 /** Indicates that user interaction is required.
999 An example of when this state is used is when a field in a form must be filled
1000 before a form can be processed.
1002 IA2_STATE_REQUIRED = 0x800,
1004 /** Indicates an object which supports text selection.
1006 Note: This is different than MSAA STATE_SYSTEM_SELECTABLE.
1008 IA2_STATE_SELECTABLE_TEXT = 0x1000,
1010 /** Indicates that this text object can contain only a single line of text. */
1011 IA2_STATE_SINGLE_LINE = 0x2000,
1013 /** Indicates that the accessible object is stale.
1015 This state is used when the accessible object no longer accurately
1016 represents the state of the object which it is representing such as when an
1017 object is transient or when an object has been or is in the process of being
1018 destroyed or when the object's index in its parent has changed.
1020 IA2_STATE_STALE = 0x4000,
1022 /** Indicates that the object implements autocompletion.
1024 This state indicates that a text control will respond to the input of
1025 one ore more characters and cause a sub-item to become selected. The
1026 selection may also result in events fired on the parent object.
1028 IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
1030 /** Indicates this object is transient.
1032 An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS.
1033 For example, a list item object may be managed by its parent list object and may only
1034 exist as long as the object is actually rendered. Similarly a table cell's accessible
1035 object may exist only while the cell has focus. However, from the perspective of an
1036 assistive technology a transient object behaves like a non-transient object. As a
1037 result it is likely that this state is not of use to an assistive technology, but it
1038 is provided in case an assistive technology determines that knowledge of the transient
1039 nature of the object is useful and also for harmony with the Linux accessibility API.
1041 Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
1043 IA2_STATE_TRANSIENT = 0x10000,
1045 /** Indicates the orientation of this object is vertical. */
1046 IA2_STATE_VERTICAL = 0x20000
1049 /*************************************************************************
1051 * File Name (Accessible2.idl)
1053 * IAccessible2 IDL Specification
1055 * Copyright (c) 2007, 2010 Linux Foundation
1056 * Copyright (c) 2006 IBM Corporation
1057 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
1058 * All rights reserved.
1061 * Redistribution and use in source and binary forms, with or without
1062 * modification, are permitted provided that the following conditions
1063 * are met:
1065 * 1. Redistributions of source code must retain the above copyright
1066 * notice, this list of conditions and the following disclaimer.
1068 * 2. Redistributions in binary form must reproduce the above
1069 * copyright notice, this list of conditions and the following
1070 * disclaimer in the documentation and/or other materials
1071 * provided with the distribution.
1073 * 3. Neither the name of the Linux Foundation nor the names of its
1074 * contributors may be used to endorse or promote products
1075 * derived from this software without specific prior written
1076 * permission.
1078 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
1079 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
1080 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1081 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1082 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
1083 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1084 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1085 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1086 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1087 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1088 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1089 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
1090 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1092 * This BSD License conforms to the Open Source Initiative "Simplified
1093 * BSD License" as published at:
1094 * http://www.opensource.org/licenses/bsd-license.php
1096 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
1097 * mark may be used in accordance with the Linux Foundation Trademark
1098 * Policy to indicate compliance with the IAccessible2 specification.
1100 ************************************************************************/
1102 /** @mainpage
1104 @section _interfaces Interfaces
1105 IAccessible2\n
1106 IAccessibleAction\n
1107 IAccessibleApplication\n
1108 IAccessibleComponent\n
1109 IAccessibleHypertext\n
1110 IAccessibleHyperlink\n
1111 IAccessibleImage\n
1112 IAccessibleRelation\n
1113 IAccessibleTable [deprecated]\n
1114 IAccessibleTable2\n
1115 IAccessibleTableCell\n
1116 IAccessibleText\n
1117 IAccessibleEditableText\n
1118 IAccessibleValue
1120 @section _structs Structs
1121 IA2Locale\n
1122 IA2TableModelChange\n
1123 IA2TextSegment
1125 @section _enums Enums
1126 ::IA2CoordinateType values define the requested coordinate type (screen or parent window).\n
1127 ::IA2EventID values identify events.\n
1128 ::IA2Role values defines roles which are in addition to the existing MSAA roles.\n
1129 ::IA2ScrollType values define where to place an object or substring on the screen.\n
1130 ::IA2States values define states which are in addition to the existing MSAA states.\n
1131 ::IA2TableModelChangeType values describe the kinds of changes made to a table (insert, delete, update).\n
1132 ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph).\n
1133 ::IA2TextSpecialOffsets values define special offsets for use in the text interfaces.
1135 @section _constants Constants
1136 @ref grpRelations
1138 @section _misc Miscellaneous
1139 @ref _licensePage "BSD License"\n
1140 @ref _generalInfo "General Information"\n
1142 @page _licensePage BSD License
1143 %IAccessible2 IDL Specification
1145 Copyright (c) 2007, 2010 Linux Foundation\n
1146 Copyright (c) 2006 IBM Corporation\n
1147 Copyright (c) 2000, 2006 Sun Microsystems, Inc.\n
1148 All rights reserved.
1150 Redistribution and use in source and binary forms, with or without
1151 modification, are permitted provided that the following conditions
1152 are met:
1154 1. Redistributions of source code must retain the above copyright
1155 notice, this list of conditions and the following disclaimer.
1157 2. Redistributions in binary form must reproduce the above
1158 copyright notice, this list of conditions and the following
1159 disclaimer in the documentation and/or other materials
1160 provided with the distribution.
1162 3. Neither the name of the Linux Foundation nor the names of its
1163 contributors may be used to endorse or promote products
1164 derived from this software without specific prior written
1165 permission.
1167 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
1168 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
1169 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1170 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1171 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
1172 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1173 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1174 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1175 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1176 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1177 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1178 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
1179 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1181 This BSD License conforms to the Open Source Initiative "Simplified
1182 BSD License" as published at:
1183 http://www.opensource.org/licenses/bsd-license.php
1185 %IAccessible2 is a trademark of the Linux Foundation. The %IAccessible2
1186 mark may be used in accordance with the
1187 <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/trademark-policy">
1188 Linux Foundation Trademark Policy</a> to indicate compliance with the %IAccessible2 specification.
1190 @page _generalInfo General Information
1191 The following information is applicable to two or more interfaces.
1193 @ref _errors\n
1194 @ref _memory\n
1195 &nbsp;&nbsp;@ref _arrayConsideration\n
1196 @ref _indexes\n
1197 @ref _enums\n
1198 @ref _specialOffsets\n
1199 @ref _dicoveringInterfaces\n
1200 @ref _changingInterfaces\n
1201 @ref _applicationInfo\n
1202 @ref _childIDs\n
1203 @ref _variants\n
1204 @ref _iaaction-iahyperlink\n
1205 @ref _trademark
1207 @section _errors Error Handling
1208 HRESULT values are defined by the Microsoft&reg; Win32&reg; API. For more information, refer to
1209 <a href="http://msdn2.microsoft.com/en-us/library/bb401631.aspx">Interpreting HRESULT Values</a>
1210 in MSDN&reg;.
1212 Note that the S_FALSE return value is considered a non-error value and the
1213 SUCCEEDED macro will return TRUE. S_FALSE is used when there is no failure
1214 but there was nothing valid to return, e.g. in IAccessible2::attributes when
1215 there are no attributes. When S_FALSE is returned [out] pointer types should
1216 be NULL and [out] longs should generally be 0, but sometimes -1 is used such
1217 as IAccessible2::indexInParent, IAccessibleText::caretOffset, and
1218 IAccessibleHypertext::hyperlinkIndex.
1220 Note that for BSTR [out] variables common COM practice is that the server does
1221 the SysAllocString and the client does the SysFreeString. Also note that when
1222 NULL is returned there is no need for the client to call SysFreeString. Please
1223 refer to the documentation for each method for more details regarding error handling.
1225 @section _memory Memory Management
1226 The following memory management issues should be considered:
1227 @li Although [out] BSTR variables are declared by the client, their space is
1228 allocated by the server. They need to be freed with SysFreeString by the
1229 client at end of life; the same is true when BSTRs are used in structs or
1230 arrays which are passed to the server.
1231 @li If there is no valid [out] BSTR to return, the server should return S_FALSE and
1232 assign NULL to the output, e.g. *theOutBSTR = NULL;.
1233 @li COM interfaces need to be referenced with AddRef when used and dereferenced
1234 with Release at end of life.
1235 @li Single [out] longs, HWNDs, booleans, and structs are declared by the caller
1236 and passed by reference. The marshaller does all the memory management.
1238 The following articles may be helpful for understanding memory management issues:
1239 @li An article by Don Box in a
1240 <a href="http://www.microsoft.com/msj/1196/activex1196.aspx">Q & A section</a>
1241 of the November 1996 edition of the Microsoft Systems Journal.
1242 @li A posting to a CodeGuru forum,
1243 <a href="http://www.codeguru.com/forum/showthread.php?t=364511">Windows SDK
1244 String: What are the rules for BSTR allocation and deallocation?</a>
1246 @subsection _arrayConsideration Special Consideration when using Arrays
1247 There are several methods which return arrays. It is considered a best practice
1248 for the client to allocate and free the arrays. This can be done for
1249 IAccessible2::relations and IAccessibleRelation::targets. However, due to the
1250 coding of the IDL for the remaining methods which return arrays, the server must
1251 allocate the array and the client must free the array when no longer needed.
1252 These methods are IAccessible2::extendedStates, IAccessible2::localizedExtendedStates,
1253 IAccessibleAction::keyBinding, IAccessibleTable::selectedChildren,
1254 IAccessibleTable::selectedColumns, and IAccessibleTable::selectedRows. For those
1255 methods, the server must allocate both the top level array and any storage
1256 associated with it, e.g. for BSTRs. The client must use CoTaskMemFree to free
1257 the array and any BSTRs must be freed with SysFreeString.
1259 Also, the IDL for those methods includes an extraneous [in] parameter for the
1260 caller to specify the max size of the array. This parameter will be ignored by
1261 the COM server.
1263 @section _indexes Zero and One Based Indexes
1264 Unless otherwise specified all offsets and indexes are 0 based.
1266 @section _enums Enums
1267 Note that enums start at 0.
1269 @section _specialOffsets Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods
1270 IAccessibleText and IAccessibleEditableText can use one or more of the following
1271 special offset values. They are defined in the ::IA2TextSpecialOffsets enum.
1272 @li Using ::IA2_TEXT_OFFSET_LENGTH (-1) as an offset in any of the IAccessibleText or
1273 IAccessibleEditableText methods is the same as specifying the length of the string.
1274 @li Using ::IA2_TEXT_OFFSET_CARET (-2) as an offset for IAccessibleText::textBeforeOffset,
1275 IAccessibleText::textAtOffset, and IAccessibleText::textAfterOffset indicates that the
1276 text related to the physical location of the caret should be used. This is needed for
1277 applications that consider the character offset of the end of one line (as reached by
1278 pressing the End key) the same as the offset of the first character on the next line.
1279 Since the same offset is associated with two different lines a special means is needed
1280 to fetch text from the line where the caret is physically located.
1282 @section _dicoveringInterfaces Discovery of Interfaces
1283 In general AT (Assistive Technology) should try IAccessible2 interfaces, followed by using
1284 the MSAA (Microsoft&reg; Active Accessibility&reg;) interfaces. (In cases where the an application
1285 is known to have custom interfaces which provide information not supplied by IAccessible2
1286 or MSAA, then those custom interfaces can be used.) The AT can then, by default, support
1287 unknown IAccessible2/MSAA applications, without the application developers having to request
1288 AT vendors for support on an individual application by application basis.
1290 When you have a reference to an IAccessible and require a reference to an IAccessible2 use
1291 QueryService as follows:
1292 @code
1293 // pAcc is a reference to the accessible object's IAccessible interface.
1294 IServiceProvider *pService = NULL;
1295 hr = pAcc->QueryInterface(IID_IServiceProvider, (void **)&pService);
1296 if(SUCCEEDED(hr)) {
1297 IAccessible2 *pIA2 = NULL;
1298 hr = pService->QueryService(IID_IAccessible, IID_IAccessible2, (void**)&pIA2);
1299 if (SUCCEEDED(hr) && pIA2) {
1300 // The control supports IAccessible2.
1301 // pIA2 is the reference to the accessible object's IAccessible2 interface.
1304 @endcode
1306 @section _changingInterfaces Changing between Accessible Interfaces
1307 Note that developers must always implement MSAA's IAccessible and, if needed, some
1308 of the interfaces in the set of IAccessible2 interfaces. Although the IAccessible2
1309 IDL is currently coded such that IAccessible2 is a subclass of MSAA's IAccessible,
1310 none of MSAA's IAccessible methods are overridden or extended. In order to allow
1311 future removal of the inheritance, Assistive Technologies (ATs) should not rely on
1312 that inheritance.
1314 QueryService must be used to switch from a reference to an MSAA IAccessible interface
1315 to another interface. This has been
1316 <a href="http://www.accessinteropalliance.org/docs/Introducing_IAccessibleEx.doc">
1317 documented by Microsoft</a> and the pertinent facts have been extracted below:
1319 @par
1320 Why use QueryService instead of just using QueryInterface to get IAccessibleEx
1321 directly? The reason is that since MSAA 2.0, clients don't talk to a server's
1322 IAccessible interface directly; instead they talk to an intermediate MSAA-provided
1323 wrapper that calls through to the original IAccessible. This wrapper provides services
1324 such as implementing IDispatch, supplying information from MSAA 2.0's Dynamic Annotation
1325 service, and scaling locations when running on Windows Vista with DPI scaling enabled.
1326 QueryService is the supported way to expose additional interfaces from an existing
1327 IAccessible and was originally used by MSHTML to expose IHTMLElement objects corresponding
1328 to IAccessibles. QueryService is often more convenient for servers to implement than
1329 QueryInterface because it does not have the same requirements for preserving object
1330 identity or symmetry/transitivity as QueryInterface, so QueryService allows servers to
1331 easily implement the interface on the same object or a separate object. The latter is
1332 often hard to do with QueryInterface unless the original object supports aggregation.
1334 Two related references in MSDN&reg; are:
1335 @li <a href="http://msdn.microsoft.com/en-us/library/ms696078(VS.85).aspx">
1336 "Using QueryService to expose a native object model interface for an IAccessible object"</a>
1337 @li <a href="http://msdn.microsoft.com/en-us/library/ms528415.aspx#acc_obj">
1338 "Accessing the Internet Explorer Object Associated with an Accessible Object"</a>
1340 Based on this information from Microsoft, QueryService must be used to switch back and forth
1341 between a reference to an MSAA IAccessible interface and any of the IAccessible2 interfaces.
1343 Regarding switching between any of the IAccessible2 interfaces, applications implementing
1344 IAccessible2 should implement the IAccessible2 interfaces on a single object since ATs
1345 will be using QueryInterface to switch between the IAccessilbe2 interfaces. Implementing
1346 the IAccessible2 interfaces on separate objects would require the use of QueryService.
1347 There is one exception, IAccessibleApplication can be implemented on a separate object so
1348 its common code doesn't have to be included in each accessible object. ATs should use
1349 QueryService to access IAccessibleApplication.
1351 @section _applicationInfo Access to Information about the Application
1352 Servers implementing IAccessible2 should provide access to the IAccessibleApplication
1353 interface via QueryService from any object so that ATs can easily determine specific
1354 information about the application such as its name or version.
1356 @section _childIDs Child IDs
1357 The IAccessible2 interfaces do not support child IDs, i.e. simple child elements.
1358 Full accessible objects must be created for each object that supports IAccessible2.
1359 Therefore MSAA's get_accChild should never return a child ID (other than CHILDID_SELF)
1360 for an object that implements any of the IAccessible2 interfaces.
1362 Microsoft's UI Automation specification has the same limitation and this was resolved
1363 in the UI Automation Express specification by adding IAccessibleEx::GetObjectForChild
1364 and IAccessibleEx::GetIAccessiblePair. These methods allow mapping back and forth
1365 between an IAccessibleEx and an {IAccessible, Child ID} pair. A future version of
1366 IAccessible2 may include similar methods to map back and forth between an IAccessible2
1367 and an {IAccessible, Child ID} pair.
1369 @section _variants VARIANTs
1370 Some methods return a VARIANT. Implementers need to make sure that the return type is
1371 specified, i.e. VT_I4, VT_IDISPATCH, etc. The methods that return VARIANTs are
1372 IAccessibleHyperlink::anchor, IAccessibleHyperlink::anchorTarget, IAccessibleValue::currentValue,
1373 IAccessibleValue::maximumValue, IAccessibleValue::minimumValue.
1375 @section _iaaction-iahyperlink IAccessibleHyperlink as subclass of IAccessibleAction
1376 In this version of the IDL, IAccessibleHyperlink is a subclass of IAccessibleAction.
1377 However, there is no practical need for that inheritance and in some cases, such as
1378 an image map of smart tags, it doesn't make sense because such an image map doesn't
1379 have actionable objects; it's the secondary smart tags that are actionable. As a
1380 result, implementations should not rely on the inheritance as it may be removed in
1381 a later version of the IDL.
1383 @section _trademark Trademark Attribution
1384 The names of actual companies and products mentioned herein may be the trademarks of
1385 their respective owners. In particular, Active Accessibility, Microsoft, MSDN, and Win32
1386 are trademarks of the Microsoft group of companies in the U.S.A. and/or other countries.
1390 import "objidl.idl";
1391 import "oaidl.idl";
1392 import "oleacc.idl";
1397 /** A structure defining the locale of an accessible object.
1399 IAccessible2::locale returns this struct.
1401 typedef struct IA2Locale {
1402 BSTR language; ///< ISO 639-1 Alpha-2 two character language code
1403 BSTR country; ///< ISO 3166-1 Alpha-2 two character country code
1404 BSTR variant; ///< Application specific variant of the locale
1405 } IA2Locale;
1407 /** This interface must always be provided for objects that support some
1408 portion of the collection of the %IAccessible2 interfaces.
1410 Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces"
1411 for special considerations related to use of the MSAA IAccessible interface and
1412 the set of %IAccessible2 interfaces.
1415 [object, uuid(E89F726E-C4F4-4c19-BB19-B647D7FA8478)]
1416 interface IAccessible2 : IAccessible
1419 /** @brief Returns the number of accessible relations for this object.
1420 @param [out] nRelations
1421 @retval S_OK
1423 [propget] HRESULT nRelations
1425 [out, retval] long *nRelations
1428 /** @brief Returns one accessible relation for this object.
1429 @param [in] relationIndex
1430 0 based
1431 @param [out] relation
1432 @retval S_OK
1433 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
1435 [propget] HRESULT relation
1437 [in] long relationIndex,
1438 [out, retval] IAccessibleRelation **relation
1441 /** @brief Returns multiple accessible relations for this object.
1442 @param [in] maxRelations
1443 maximum size of the array allocated by the client
1444 @param [out] relations
1445 The array of accessible relation objects. Note that this array is to be
1446 allocated by the client and freed when no longer needed. Refer to @ref
1447 _arrayConsideration "Special Consideration when using Arrays" for more details.
1448 @param [out] nRelations
1449 actual number of relations in the returned array (not more than maxRelations)
1450 @retval S_OK
1451 @retval S_FALSE if there are no relations, nRelations is set to 0
1453 [propget] HRESULT relations
1455 [in] long maxRelations,
1456 [out, size_is(maxRelations), length_is(*nRelations)]
1457 IAccessibleRelation **relations,
1458 [out, retval] long *nRelations
1461 /** @brief Returns the role of an %IAccessible2 object.
1462 @param [out] role
1463 The role of an %IAccessible2 object.
1464 @retval S_OK
1465 @note
1466 @li For convenience MSAA roles are also passed through this method so the
1467 AT doesn't have to also fetch roles through MSAA's get_accRole.
1468 @li %IAccessible2 roles should not be passed through MSAA's get_accRole.
1469 @li For compatibility with non IAccessible2 enabled ATs, IAccessible2
1470 applications should also add support to get_accRole to return the closest
1471 MSAA role or ROLE_SYSTEM_CLIENT (the MSAA defined default role) if there
1472 is not a good match.
1473 @li This method is missing a [propget] prefix in the IDL. The result is the
1474 method is named role in generated C++ code instead of get_role.
1476 HRESULT role
1478 [out, retval] long *role
1481 /** @brief Makes an object visible on the screen.
1482 @param [in] scrollType
1483 Defines where the object should be placed on the screen.
1484 @retval S_OK
1485 @retval E_INVALIDARG if bad [in] passed
1487 HRESULT scrollTo
1489 [in] enum IA2ScrollType scrollType
1492 /** @brief Moves the top left of an object to a specified location.
1494 @param [in] coordinateType
1495 Specifies whether the coordinates are relative to the screen or the parent object.
1496 @param [in] x
1497 Defines the x coordinate.
1498 @param [in] y
1499 Defines the y coordinate.
1500 @retval S_OK
1501 @retval E_INVALIDARG if bad [in] passed
1503 HRESULT scrollToPoint
1505 [in] enum IA2CoordinateType coordinateType,
1506 [in] long x,
1507 [in] long y
1510 /** @brief Returns grouping information.
1512 Used for tree items, list items, tab panel labels, radio buttons, etc.
1513 Also used for collections of non-text objects.
1515 @param [out] groupLevel
1516 1 based, 0 indicates that this value is not applicable
1517 @param [out] similarItemsInGroup
1518 1 based, 0 indicates that this value is not applicable
1519 @param [out] positionInGroup
1520 1 based, 0 indicates that this value is not applicable. This is an index
1521 into the objects in the current group, not an index into all the objects
1522 at the same group level.
1523 @retval S_OK if at least one value is valid
1524 @retval S_FALSE if no values are valid
1525 @note This method is meant to describe the nature of an object's containment
1526 structure. This is normally not implemented on a combo box to describe the nature
1527 of its contents. Normally an AT will get that information from its child list
1528 object. However, in some cases when combo boxes are not able to be structured
1529 such that the list is a child of the combo box, this method is implemented
1530 on the combo box itself. ATs can use this interface if a child list is not found.
1532 [propget] HRESULT groupPosition
1534 [out] long *groupLevel,
1535 [out] long *similarItemsInGroup,
1536 [out, retval] long *positionInGroup
1539 /** @brief Returns the bit strip containing any IAccessible2 states.
1541 The IAccessible2 states are in addition to the MSAA states and are defined in
1542 the IA2States enum.
1544 @param [out] states
1545 @retval S_OK
1547 [propget] HRESULT states
1549 [out, retval] AccessibleStates *states
1552 /** @brief Returns the extended role.
1554 An extended role is a role which is dynamically generated by the application.
1555 It is not predefined by the %IAccessible2 specification.
1557 @param [out] extendedRole
1558 @retval S_OK
1559 @retval S_FALSE if there is nothing to return, [out] value is NULL
1561 [propget] HRESULT extendedRole
1563 [out, retval] BSTR *extendedRole
1566 /** @brief Returns the localized extended role.
1567 @param [out] localizedExtendedRole
1568 @retval S_OK
1569 @retval S_FALSE if there is nothing to return, [out] value is NULL
1571 [propget] HRESULT localizedExtendedRole
1573 [out, retval] BSTR *localizedExtendedRole
1576 /** @brief Returns the number of extended states.
1577 @param [out] nExtendedStates
1578 @retval S_OK
1580 [propget] HRESULT nExtendedStates
1582 [out, retval] long *nExtendedStates
1585 /** @brief Returns the extended states (array of strings).
1587 An extended state is a state which is dynamically generated by the application.
1588 It is not predefined by the %IAccessible2 specification.
1590 @param [in] maxExtendedStates
1591 This parameter is ignored. Refer to @ref _arrayConsideration
1592 "Special Consideration when using Arrays" for more details.
1593 @param [out] extendedStates
1594 This array is allocated by the server. Free it with CoTaskMemFree.
1595 @param [out] nExtendedStates
1596 The number of extended states returned; the size of the returned array.
1597 @retval S_OK
1598 @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively
1600 [propget] HRESULT extendedStates
1602 [in] long maxExtendedStates,
1603 [out, size_is(,maxExtendedStates), length_is(,*nExtendedStates)] BSTR **extendedStates,
1604 [out, retval] long *nExtendedStates
1607 /** @brief Returns the localized extended states (array of strings).
1608 @param [in] maxLocalizedExtendedStates
1609 This parameter is ignored. Refer to @ref _arrayConsideration
1610 "Special Consideration when using Arrays" for more details.
1611 @param [out] localizedExtendedStates
1612 This array is allocated by the server. Free it with CoTaskMemFree.
1613 @param [out] nLocalizedExtendedStates
1614 The number of localized extended states returned; the size of the returned array.
1615 @retval S_OK
1616 @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively
1618 [propget] HRESULT localizedExtendedStates
1620 [in] long maxLocalizedExtendedStates,
1621 [out, size_is(,maxLocalizedExtendedStates), length_is(,*nLocalizedExtendedStates)] BSTR **localizedExtendedStates,
1622 [out, retval] long *nLocalizedExtendedStates
1625 /** @brief Returns the unique ID.
1627 The uniqueID is an identifier for this object, is unique within the
1628 current window, and remains the same for the lifetime of the accessible
1629 object.
1631 The uniqueID is not related to:
1632 - the MSAA objectID which is used by the server to disambiguate between
1633 IAccessibles per HWND or
1634 - the MSAA childID which is used to disambiguate between children being
1635 managed by an IAccessible.
1637 This value is provided so the AT can have access to a unique runtime persistent
1638 identifier even when not handling an event for the object.
1640 An example of when this value is useful is if the AT wants to build a cache.
1641 The AT could cache the uniqueIDs in addition to other data being cached.
1642 When an event is fired the AT could map the uniqueID to its internal model.
1643 Thus, if there's a REORDER/SHOW/HIDE event the AT knows which part of the
1644 internal structure has been invalidated and can refetch just that part.
1646 This value can also be used by an AT to determine when the current control
1647 has changed. If the role is the same for two controls that are adjacent in
1648 the tab order, this can be used to detect the new control.
1650 Another use of this value by an AT is to identify when a grouping object has
1651 changed, e.g. when moving from a radio button in one group to a radio button in a
1652 different group.
1654 One means of implementing this would be to create a factory with a 32 bit number
1655 generator and a reuse pool. The number generator would emit numbers starting
1656 at 1. Each time an object's life cycle ended, its number would be saved into a
1657 resuse pool. The number generator would be used whenever the reuse pool was empty.
1659 @param [out] uniqueID
1660 @retval S_OK
1662 [propget] HRESULT uniqueID
1664 [out, retval] long *uniqueID
1667 /** @brief Returns the window handle for the parent window which contains this object.
1669 This is the same window handle which will be passed for any events that occur on the
1670 object, but is cached in the accessible object for use when it would be helpful to
1671 access the window handle in cases where an event isn't fired on this object.
1673 A use case is when a screen reader is grabbing an entire web page on a page load.
1674 Without the availability of windowHandle, the AT would have to get the window handle
1675 by using WindowFromAccessibleObject on each IAccessible, which is slow because it's
1676 implemented by oleacc.dll as a loop which crawls up the ancestor chain and looks for
1677 a ROLE_WINDOW object, mapping that back to a window handle.
1679 @param [out] windowHandle
1680 @retval S_OK
1682 [propget] HRESULT windowHandle
1684 [out, retval] HWND *windowHandle
1687 /** @brief Returns the index of this object in its parent object.
1688 @param [out] indexInParent
1689 0 based; -1 indicates there is no parent; the upper bound is the value
1690 returned by the parent's IAccessible::get_accChildCount.
1691 @retval S_OK
1692 @retval S_FALSE if no parent, [out] value is -1
1694 [propget] HRESULT indexInParent
1696 [out, retval] long *indexInParent
1699 /** @brief Returns the IA2Locale of the accessible object.
1700 @param [out] locale
1701 @retval S_OK
1703 [propget] HRESULT locale
1705 [out, retval] IA2Locale *locale
1708 /** @brief Returns the attributes specific to this %IAccessible2 object, such as a cell's formula.
1709 @param [out] attributes
1710 @retval S_OK
1711 @retval S_FALSE returned if there is nothing to return, [out] value is NULL
1713 [propget] HRESULT attributes
1715 [out, retval] BSTR *attributes
1720 /*************************************************************************
1722 * File Name (AccessibleComponent.idl)
1724 * IAccessible2 IDL Specification
1726 * Copyright (c) 2007, 2010 Linux Foundation
1727 * Copyright (c) 2006 IBM Corporation
1728 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
1729 * All rights reserved.
1732 * Redistribution and use in source and binary forms, with or without
1733 * modification, are permitted provided that the following conditions
1734 * are met:
1736 * 1. Redistributions of source code must retain the above copyright
1737 * notice, this list of conditions and the following disclaimer.
1739 * 2. Redistributions in binary form must reproduce the above
1740 * copyright notice, this list of conditions and the following
1741 * disclaimer in the documentation and/or other materials
1742 * provided with the distribution.
1744 * 3. Neither the name of the Linux Foundation nor the names of its
1745 * contributors may be used to endorse or promote products
1746 * derived from this software without specific prior written
1747 * permission.
1749 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
1750 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
1751 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1752 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1753 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
1754 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1755 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1756 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1757 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1758 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1759 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1760 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
1761 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1763 * This BSD License conforms to the Open Source Initiative "Simplified
1764 * BSD License" as published at:
1765 * http://www.opensource.org/licenses/bsd-license.php
1767 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
1768 * mark may be used in accordance with the Linux Foundation Trademark
1769 * Policy to indicate compliance with the IAccessible2 specification.
1771 ************************************************************************/
1773 import "objidl.idl";
1774 import "oaidl.idl";
1775 import "oleacc.idl";
1777 /** A value specifying a color in ARGB format, where each 8 bit color component
1778 specifies alpha, red, green, and blue respectively. The alpha value is optional.
1780 typedef long IA2Color;
1782 /** @brief This interface is implemented by any object that can be rendered
1783 on the screen.
1785 This interface provides the standard mechanism for an assistive technology
1786 to retrieve information concerning the graphical representation of an object.
1787 Coordinates used by the functions of this interface are specified in
1788 different coordinate systems. Their scale is the same and is equal to
1789 that of the screen coordinate system. In other words all coordinates
1790 are measured in pixels. They differ in their respective origin:
1791 <ul>
1792 <li>The screen coordinate system has its origin in the upper left
1793 corner of the current screen.</li>
1794 <li>The origin of the parent coordinate system is the upper left corner
1795 of the parent's bounding box. With no parent the screen coordinate
1796 system is used instead.</li>
1797 </ul>
1799 [object, uuid(1546D4B0-4C98-4bda-89AE-9A64748BDDE4)]
1800 interface IAccessibleComponent : IUnknown
1803 /** @brief Returns the location of the upper left corner of the object's
1804 bounding box relative to the immediate parent object.
1806 The coordinates of the bounding box are given relative to the parent's
1807 coordinate system. The coordinates of the returned position are relative
1808 to this object's parent or relative to the screen on which this object
1809 is rendered if it has no parent. If the object is not on any screen
1810 the returned position is (0,0).
1812 @param [out] x
1813 @param [out] y
1814 @retval S_OK
1816 [propget] HRESULT locationInParent
1818 [out] long *x,
1819 [out, retval] long *y
1822 /** @brief Returns the foreground color of this object.
1823 @param [out] foreground
1824 The returned color is the foreground color of this object or, if
1825 that is not supported, the default foreground color.
1826 @retval S_OK
1828 [propget] HRESULT foreground
1830 [out, retval] IA2Color *foreground
1833 /** @brief Returns the background color of this object.
1834 @param [out] background
1835 The returned color is the background color of this object or, if
1836 that is not supported, the default background color.
1837 @retval S_OK
1839 [propget] HRESULT background
1841 [out, retval] IA2Color *background
1844 /*************************************************************************
1846 * File Name (AccessibleValue.idl)
1848 * IAccessible2 IDL Specification
1850 * Copyright (c) 2007, 2010 Linux Foundation
1851 * Copyright (c) 2006 IBM Corporation
1852 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
1853 * All rights reserved.
1856 * Redistribution and use in source and binary forms, with or without
1857 * modification, are permitted provided that the following conditions
1858 * are met:
1860 * 1. Redistributions of source code must retain the above copyright
1861 * notice, this list of conditions and the following disclaimer.
1863 * 2. Redistributions in binary form must reproduce the above
1864 * copyright notice, this list of conditions and the following
1865 * disclaimer in the documentation and/or other materials
1866 * provided with the distribution.
1868 * 3. Neither the name of the Linux Foundation nor the names of its
1869 * contributors may be used to endorse or promote products
1870 * derived from this software without specific prior written
1871 * permission.
1873 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
1874 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
1875 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1876 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1877 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
1878 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1879 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1880 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1881 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1882 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1883 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1884 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
1885 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1887 * This BSD License conforms to the Open Source Initiative "Simplified
1888 * BSD License" as published at:
1889 * http://www.opensource.org/licenses/bsd-license.php
1891 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
1892 * mark may be used in accordance with the Linux Foundation Trademark
1893 * Policy to indicate compliance with the IAccessible2 specification.
1895 ************************************************************************/
1897 import "objidl.idl";
1898 import "oaidl.idl";
1899 import "oleacc.idl";
1901 /** @brief This interface gives access to a single numerical value.
1903 The %IAccessibleValue interface represents a single numerical value and should
1904 be implemented by any class that supports numerical value like progress bars
1905 and spin boxes. This interface lets you access the value and its upper and
1906 lower bounds.
1908 [object, uuid(35855B5B-C566-4fd0-A7B1-E65465600394)]
1909 interface IAccessibleValue : IUnknown
1912 /** @brief Returns the value of this object as a number.
1914 The exact return type is implementation dependent. Typical types are long and
1915 double.
1916 @param [out] currentValue
1917 Returns the current value represented by this object. See the section about
1918 @ref _variants "VARIANTs" for additional information.
1919 @retval S_OK
1920 @retval S_FALSE if there is nothing to return, [out] value is NULL
1922 [propget] HRESULT currentValue
1924 [out, retval] VARIANT *currentValue
1927 /** @brief Sets the value of this object to the given number.
1929 The argument is clipped to the valid interval whose upper and lower
1930 bounds are returned by the methods IAccessibleValue::maximumValue and
1931 IAccessibleValue::minimumValue, i.e. if it is lower than the minimum
1932 value the new value will be the minimum and if it is greater than the
1933 maximum then the new value will be the maximum.
1935 @param [out] value
1936 The new value represented by this object. The set of admissible types for
1937 this argument is implementation dependent.
1938 @retval S_OK
1940 HRESULT setCurrentValue
1942 [in] VARIANT value
1945 /** @brief Returns the maximal value that can be represented by this object.
1947 The type of the returned value is implementation dependent. It does not have
1948 to be the same type as that returned by method IAccessibleValue::currentValue.
1950 @param [out] maximumValue
1951 Returns the maximal value in an implementation dependent type. If this object
1952 has no upper bound then an empty object is returned. See the section about
1953 @ref _variants "VARIANTs" for additional information.
1954 @retval S_OK
1956 [propget] HRESULT maximumValue
1958 [out, retval] VARIANT *maximumValue
1961 /** @brief Returns the minimal value that can be represented by this object.
1963 The type of the returned value is implementation dependent. It does not have
1964 to be the same type as that returned by method IAccessibleValue::currentValue.
1966 @param [out] minimumValue
1967 Returns the minimal value in an implementation dependent type. If this object
1968 has no lower bound then an empty object is returned. See the section about
1969 @ref _variants "VARIANTs" for additional information.
1970 @retval S_OK
1972 [propget] HRESULT minimumValue
1974 [out, retval] VARIANT *minimumValue
1978 /*************************************************************************
1980 * File Name (AccessibleText.idl)
1982 * IAccessible2 IDL Specification
1984 * Copyright (c) 2007, 2010 Linux Foundation
1985 * Copyright (c) 2006 IBM Corporation
1986 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
1987 * All rights reserved.
1990 * Redistribution and use in source and binary forms, with or without
1991 * modification, are permitted provided that the following conditions
1992 * are met:
1994 * 1. Redistributions of source code must retain the above copyright
1995 * notice, this list of conditions and the following disclaimer.
1997 * 2. Redistributions in binary form must reproduce the above
1998 * copyright notice, this list of conditions and the following
1999 * disclaimer in the documentation and/or other materials
2000 * provided with the distribution.
2002 * 3. Neither the name of the Linux Foundation nor the names of its
2003 * contributors may be used to endorse or promote products
2004 * derived from this software without specific prior written
2005 * permission.
2007 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
2008 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
2009 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
2010 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2011 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
2012 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2013 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2014 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2015 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2016 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2017 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2018 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
2019 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2021 * This BSD License conforms to the Open Source Initiative "Simplified
2022 * BSD License" as published at:
2023 * http://www.opensource.org/licenses/bsd-license.php
2025 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
2026 * mark may be used in accordance with the Linux Foundation Trademark
2027 * Policy to indicate compliance with the IAccessible2 specification.
2029 ************************************************************************/
2031 import "objidl.idl";
2032 import "oaidl.idl";
2033 import "oleacc.idl";
2036 /** A structure containing a substring and the start and end offsets in the enclosing string.
2038 IAccessibleText::newText and IAccessibleText::oldText return this struct.
2040 typedef struct IA2TextSegment {
2041 BSTR text; ///< A copy of a segment of text taken from an enclosing paragraph.
2042 long start; ///< Index of the first character of the segment in the enclosing text.
2043 long end; ///< Index of the character following the last character of the segment in the enclosing text.
2044 } IA2TextSegment;
2046 /** This enum defines values which specify a text boundary type.
2048 IA2_TEXT_BOUNDARY_SENTENCE is optional. When a method doesn't implement this
2049 method it must return S_FALSE. Typically this feature would not be implemented
2050 by an application. However, if the application developer was not satisfied with
2051 how screen readers have handled the reading of sentences this boundary type
2052 could be implemented and screen readers could use the application's version of a
2053 sentence rather than the screen reader's.
2055 The rest of the boundary types must be supported.
2057 This enum is used in IAccessibleText::textBeforeOffset, IAccessibleText::textAtOffset,
2058 and IAccessibleText::textAfterOffset.
2061 enum IA2TextBoundaryType {
2062 IA2_TEXT_BOUNDARY_CHAR, /**< Typically, a single character is returned. In some cases more than
2063 one character is returned, for example, when a document contains field
2064 data such as a field containing a date, time, or footnote reference.
2065 In this case the caret can move over several characters in one movement
2066 of the caret. Note that after the caret moves, the caret offset changes
2067 by the number of characters in the field, e.g. by 8 characters in the
2068 following date: 03/26/07. */
2069 IA2_TEXT_BOUNDARY_WORD, /**< The range provided matches the range observed when the application
2070 processes the Ctrl + left arrow and Ctrl + right arrow key sequences.
2071 Typically this is from the start of one word to the start of the next, but
2072 various applications are inconsistent in the handling of the end of a line. */
2073 IA2_TEXT_BOUNDARY_SENTENCE, ///< Range is from start of one sentence to the start of another sentence.
2074 IA2_TEXT_BOUNDARY_PARAGRAPH, ///< Range is from start of one paragraph to the start of another paragraph.
2075 IA2_TEXT_BOUNDARY_LINE, /**< Range is from start of one line to the start of another line. This
2076 often means that an end-of-line character will appear at the end of the
2077 range. However in the case of some applications an end-of-line character
2078 indicates the end of a paragraph and the lines composing the paragraph,
2079 other than the last line, do not contain an end of line character. */
2080 IA2_TEXT_BOUNDARY_ALL ///< Using this value will cause all text to be returned.
2083 /** @brief This interface gives read-only access to text.
2085 The %IAccessibleText interface should be implemented by all components
2086 that present textual information on the display like buttons,
2087 text entry fields, or text portions of the document window. The interface
2088 provides access to the text's content, attributes, and spatial location.
2089 However, text can not be modified with this interface. That is the task
2090 of the IAccessibleEditableText interface.
2092 The text length, i.e. the number of characters in the text, is
2093 returned by IAccessibleText::nCharacters. All methods that operate
2094 on particular characters (e.g. IAccessibleText::textAtOffset) use character
2095 indices from 0 to length-1. All methods that operate on character positions
2096 (e.g. IAccessibleText::text) use indices from 0 to length.
2098 Please note that accessible text does not necessarily support selection.
2099 In this case it should behave as if there where no selection. An empty
2100 selection is used for example to express the current cursor position.
2102 Refer to @ref _specialOffsets
2103 "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
2104 for information about special offsets that can be used in %IAccessibleText methods.
2106 E_FAIL is returned in the following cases
2107 @li endOffset < startOffset
2108 @li endoffset > length
2110 [object, uuid(24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B)]
2111 interface IAccessibleText : IUnknown
2114 /** @brief Adds a text selection
2115 @param [in] startOffset
2116 Starting offset ( 0 based).
2117 @param [in] endOffset
2118 Offset of first character after new selection (0 based).
2119 @retval S_OK
2120 @retval E_INVALIDARG if bad [in] passed
2122 HRESULT addSelection
2124 [in] long startOffset,
2125 [in] long endOffset
2128 /** @brief Returns text attributes.
2129 @param [in] offset
2130 Text offset (0 based)
2131 @param [out] startOffset
2132 The starting offset of the character range over which all text attributes match
2133 those of offset. (0 based)
2134 @param [out] endOffset
2135 The offset of the first character past the character range over which all text
2136 attributes match those of offset. (0 based)
2137 @param [out] textAttributes
2138 A string of attributes describing the text. The attributes are described in the
2139 <a href="http://www.linuxfoundation.org/en/Accessibility/IAccessible2/TextAttributes">
2140 text attributes specification</a> on the %IAccessible2 web site.
2141 @retval S_OK
2142 @retval S_FALSE if there is nothing to return, [out] values are 0s and NULL respectively
2143 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and NULL respectively
2146 [propget] HRESULT attributes
2148 [in] long offset,
2149 [out] long *startOffset,
2150 [out] long *endOffset,
2151 [out, retval] BSTR *textAttributes
2154 /** @brief Returns the position of the caret.
2156 Returns the 0-based offset of the caret within the text. If the text is
2157 implemented as a tree of text objects with embed characters in higher levels
2158 representing substrings of child text objects and the caret is in one of the
2159 child text objects, then the offset in the higher level text object would be
2160 at the embed character representing child text object that contains the caret.
2162 For example, if the string "one two three" is implemented as a two text objects,
2163 with a top level text object containing an embed character "one ? three" and a
2164 child text object containing "two" and if the caret is in the descendant object
2165 just before the 'o' in "two", then:
2166 <ul>
2167 <li>the caretOffset for the "one ? three" object would be 4, matching the embed character</li>
2168 <li>the caretOffset for "two" would be 2, matching the "o"</li>
2169 </ul>
2170 The caret position/offset is that of the character logically following it, e.g.
2171 to the right of it in a left to right language.
2172 @param [out] offset
2173 The returned offset is relative to the text represented by this object.
2174 @retval S_OK
2175 @retval S_FALSE if the caret is not currently active on this object, i.e. the
2176 caret is located on some other object. The returned offset value will be -1.
2177 @note S_FALSE (and an offset of -1) will not be returned if the caret is somewhere
2178 in the text object or one of its descendants.
2180 [propget] HRESULT caretOffset
2182 [out, retval] long *offset
2186 /** @brief Returns the bounding box of the specified position.
2188 The virtual character after the last character of the represented
2189 text, i.e. the one at position length is a special case. It represents the
2190 current input position and will therefore typically be queried by AT more
2191 often than other positions. Because it does not represent an existing character
2192 its bounding box is defined in relation to preceding characters. It should be
2193 roughly equivalent to the bounding box of some character when inserted at the
2194 end of the text. Its height typically being the maximal height of all the
2195 characters in the text or the height of the preceding character, its width being
2196 at least one pixel so that the bounding box is not degenerate.
2198 Note that the index 'length' is not always valid. Whether it is or not is
2199 implementation dependent. It typically is when text is editable or otherwise
2200 when on the screen the caret can be placed behind the text. You can be sure
2201 that the index is valid after you have received a ::IA2_EVENT_TEXT_CARET_MOVED
2202 event for this index.
2203 @param [in] offset
2204 Index of the character for which to return its bounding box. The valid range
2205 is 0..length.
2206 @param [in] coordType
2207 Specifies if the coordinates are relative to the screen or to the parent window.
2208 @param [out] x
2209 X coordinate of the top left corner of the bounding box of the referenced character.
2210 @param [out] y
2211 Y coordinate of the top left corner of the bounding box of the referenced character.
2212 @param [out] width
2213 Width of the bounding box of the referenced character.
2214 @param [out] height
2215 Height of the bounding box of the referenced character.
2216 @retval S_OK
2217 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s
2219 [propget] HRESULT characterExtents
2221 [in] long offset,
2222 [in] enum IA2CoordinateType coordType,
2223 [out] long *x,
2224 [out] long *y,
2225 [out] long *width,
2226 [out, retval] long *height
2230 /** @brief Returns the number of active non-contiguous selections
2231 @param [out] nSelections
2232 @retval S_OK
2234 [propget] HRESULT nSelections
2236 [out, retval] long *nSelections
2239 /** @brief Returns the text position for the specified screen position.
2241 Given a point return the zero-based index of the character under that
2242 point. The same functionality could be achieved by using the bounding
2243 boxes for each character as returned by IAccessibleText::characterExtents.
2244 The method IAccessibleText::offsetAtPoint, however, can be implemented
2245 more efficiently.
2247 @param [in] x
2248 The position's x value for which to look up the index of the character that
2249 is rendered on to the display at that point.
2250 @param [in] y
2251 The position's y value for which to look up the index of the character that
2252 is rendered on to the display at that point.
2253 @param [in] coordType
2254 Screen coordinates or window coordinates.
2255 @param [out] offset
2256 Index of the character under the given point or -1 if the point
2257 is invalid or there is no character under the point.
2258 @retval S_OK
2259 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
2261 [propget] HRESULT offsetAtPoint
2263 [in] long x,
2264 [in] long y,
2265 [in] enum IA2CoordinateType coordType,
2266 [out, retval] long *offset
2269 /** @brief Returns the character offsets of Nth active text selection
2270 @param [in] selectionIndex
2271 Index of selection (0 based).
2272 @param [out] startOffset
2273 0 based offset of first selected character
2274 @param [out] endOffset
2275 0 based offset of one past the last selected character.
2276 @retval S_OK
2277 @retval S_FALSE if there is nothing to return, [out] values are 0s
2278 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s
2280 [propget] HRESULT selection
2282 [in] long selectionIndex,
2283 [out] long *startOffset,
2284 [out, retval] long *endOffset
2287 /** @brief Returns the substring between the two given indices.
2289 The substring starts with the character at startOffset (inclusive) and up to
2290 the character at endOffset (exclusive), if startOffset is less or equal
2291 endOffste. If endOffset is lower than startOffset, the result is the same
2292 as a call with the two arguments being exchanged.
2294 The whole text can be requested by passing the indices zero and
2295 IAccessibleText::nCharacters. If both indices have the same value, an empty
2296 string is returned.
2297 @param [in] startOffset
2298 Index of the first character to include in the returned string. The valid range
2299 is 0..length.
2300 @param [in] endOffset
2301 Index of the last character to exclude in the returned string. The valid range
2302 is 0..length.
2303 @param [out] text
2304 Returns the substring starting with the character at startOffset (inclusive)
2305 and up to the character at endOffset (exclusive), if startOffset is less than
2306 or equal to endOffset.
2307 @retval S_OK
2308 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
2309 @note The returned string may be longer than endOffset-startOffset bytes if text
2310 contains multi-byte characters.
2312 [propget] HRESULT text
2314 [in] long startOffset,
2315 [in] long endOffset,
2316 [out, retval] BSTR *text
2319 /** @brief Returns a text portion before the given position.
2321 Returns the substring of the specified text type that is located before the
2322 given character and does not include it. The result of this method should be
2323 same as a result for IAccessibleText::textAtOffset with a suitably decreased
2324 index value.
2326 For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete
2327 word that is closest to and located before offset is returned.
2329 If the index is valid, but no suitable word (or other boundary type) is found, a
2330 NULL pointer is returned.
2332 @param [in] offset
2333 Index of the character for which to return the text part before it. The index
2334 character will not be part of the returned string. The valid range is 0..length.
2335 @param [in] boundaryType
2336 The type of the text portion to return. See ::IA2TextBoundaryType for the
2337 complete list.
2338 @param [out] startOffset
2339 0 based offset of first character.
2340 @param [out] endOffset
2341 0 based offset of one past the last character.
2342 @param [out] text
2343 Returns the requested text portion. This portion may be empty or invalid when
2344 no appropriate text portion is found or text type is invalid.
2345 @retval S_OK
2346 @retval S_FALSE if the requested boundary type is not implemented, such as
2347 ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
2348 [out] values are 0s and NULL respectively
2349 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and NULL respectively
2351 [propget] HRESULT textBeforeOffset
2353 [in] long offset,
2354 [in] enum IA2TextBoundaryType boundaryType,
2355 [out] long *startOffset,
2356 [out] long *endOffset,
2357 [out, retval] BSTR *text
2360 /** @brief Returns a text portion after the given position.
2362 Returns the substring of the specified text type that is located after the
2363 given character and does not include it. The result of this method should be
2364 same as a result for IAccessibleText::textAtOffset with a suitably increased
2365 index value.
2367 For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete
2368 word that is closest to and located after offset is returned.
2370 If the index is valid, but no suitable word (or other text type) is found, a
2371 NULL pointer is returned.
2373 @param [in] offset
2374 Index of the character for which to return the text part before it. The index
2375 character will not be part of the returned string. The valid range is 0..length.
2376 @param [in] boundaryType
2377 The type of the text portion to return. See ::IA2TextBoundaryType for the complete
2378 list.
2379 @param [out] startOffset
2380 0 based offset of first character.
2381 @param [out] endOffset
2382 0 based offset of one past the last character.
2383 @param [out] text
2384 Returns the requested text portion. This portion may be empty or invalid when
2385 no appropriate text portion is found or text type is invalid.
2386 @retval S_OK
2387 @retval S_FALSE if the requested boundary type is not implemented, such as
2388 ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
2389 [out] values are 0s and NULL respectively
2390 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and NULL respectively
2392 [propget] HRESULT textAfterOffset
2394 [in] long offset,
2395 [in] enum IA2TextBoundaryType boundaryType,
2396 [out] long *startOffset,
2397 [out] long *endOffset,
2398 [out, retval] BSTR *text
2401 /** @brief Returns a text portion that spans the given position.
2403 Returns the substring of the specified text type at the specified offset.
2405 If the index is valid, but no suitable word (or other text type) is found, a
2406 NULL pointer is returned.
2408 @param [in] offset
2409 Index of the character for which to return the text part before it. The index
2410 character will not be part of the returned string. The valid range is 0..length.
2411 @param [in] boundaryType
2412 The type of the text portion to return. See ::IA2TextBoundaryType for the complete
2413 list.
2414 @param [out] startOffset
2415 0 based offset of first character.
2416 @param [out] endOffset
2417 0 based offset of one past the last character.
2418 @param [out] text
2419 Returns the requested text portion. This portion may be empty or invalid when
2420 no appropriate text portion is found or text type is invalid.
2421 @retval S_OK
2422 @retval S_FALSE if the requested boundary type is not implemented, such as
2423 ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
2424 [out] values are 0s and NULL respectively
2425 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and NULL respectively
2427 [propget] HRESULT textAtOffset
2429 [in] long offset,
2430 [in] enum IA2TextBoundaryType boundaryType,
2431 [out] long *startOffset,
2432 [out] long *endOffset,
2433 [out, retval] BSTR *text
2436 /** @brief Unselects a range of text.
2437 @param [in] selectionIndex
2438 Index of selection to remove (0 based).
2439 @retval S_OK
2440 @retval E_INVALIDARG if bad [in] passed
2442 HRESULT removeSelection
2444 [in] long selectionIndex
2447 /** @brief Sets the position of the caret.
2449 The caret position/offset is that of the character logically following it,
2450 e.g. to the right of it in a left to right language.
2452 Setting the caret position may or may not alter the current selection. A
2453 change of the selection is notified to the accessibility event listeners with
2454 an ::IA2_EVENT_TEXT_SELECTION_CHANGED event.
2456 When the new caret position differs from the old one (which, of course, is the
2457 standard case) this is notified to the accessibility event listeners with an
2458 ::IA2_EVENT_TEXT_CARET_MOVED event.
2459 @param [in] offset
2460 The new index of the caret. This caret is actually placed to the left side of
2461 the character with that index. An index of 0 places the caret so that the next
2462 insertion goes before the first character. An index of IAccessibleText::nCharacters
2463 leads to insertion after the last character.
2464 @retval S_OK
2465 @retval E_FAIL if the caret cannot be set
2466 @retval E_INVALIDARG if bad [in] passed
2468 HRESULT setCaretOffset
2470 [in] long offset
2473 /** @brief Changes the bounds of an existing selection.
2474 @param [in] selectionIndex
2475 Index of selection to change (0 based)
2476 @param [in] startOffset
2477 New starting offset (0 based)
2478 @param [in] endOffset
2479 New ending offset (0 based) - the offset of the character just past the last character of the selection.
2480 @retval S_OK
2481 @retval E_INVALIDARG if bad [in] passed
2483 HRESULT setSelection
2485 [in] long selectionIndex,
2486 [in] long startOffset,
2487 [in] long endOffset
2490 /** @brief Returns total number of characters.
2492 Note that this may be different than the total number of bytes required to store the
2493 text, if the text contains multi-byte characters.
2494 @param [out] nCharacters
2495 @retval S_OK
2497 [propget] HRESULT nCharacters
2499 [out, retval] long *nCharacters
2502 /** @brief Makes a specific part of string visible on screen.
2503 @param [in] startIndex
2504 0 based character offset.
2505 @param [in] endIndex
2506 0 based character offset - the offset of the character just past the last character of the string.
2507 @param [in] scrollType
2508 Defines where the object should be placed on the screen.
2509 @retval S_OK
2510 @retval E_INVALIDARG if bad [in] passed
2512 HRESULT scrollSubstringTo
2514 [in] long startIndex,
2515 [in] long endIndex,
2516 [in] enum IA2ScrollType scrollType
2519 /** @brief Moves the top left of a substring to a specified location.
2521 @param [in] startIndex
2522 0 based character offset.
2523 @param [in] endIndex
2524 0 based character offset - the offset of the character just past the last character of the string.
2525 @param [in] coordinateType
2526 Specifies whether the coordinates are relative to the screen or the parent object.
2527 @param [in] x
2528 Defines the x coordinate.
2529 @param [in] y
2530 Defines the y coordinate.
2531 @retval S_OK
2532 @retval S_FALSE if the object is already at the specified location.
2533 @retval E_INVALIDARG if bad [in] passed
2535 HRESULT scrollSubstringToPoint
2537 [in] long startIndex,
2538 [in] long endIndex,
2539 [in] enum IA2CoordinateType coordinateType,
2540 [in] long x,
2541 [in] long y
2544 /** @brief Returns any inserted text.
2546 Provided for use by the ::IA2_EVENT_TEXT_INSERTED and ::IA2_EVENT_TEXT_UPDATED
2547 event handlers.
2549 This data is only guaranteed to be valid while the thread notifying the event
2550 continues. Once the handler has returned, the validity of the data depends on
2551 how the server manages the life cycle of its objects. Also, note that the server
2552 may have different life cycle management strategies for controls depending on
2553 whether or not a control manages its children. Lists, trees, and tables can have
2554 a large number of children and thus it's possible that the child objects for those
2555 controls would only be created as needed. Servers should document their life cycle
2556 strategy as this will be of interest to assistive technology or script engines
2557 accessing data out of process or from other threads. Servers only need to save the
2558 last inserted block of text and a scope of the entire application is adequate.
2560 @param [out] newText
2561 The text that was just inserted.
2562 @retval S_OK
2563 @retval S_FALSE if there is nothing to return, [out] value is NULL
2565 [propget] HRESULT newText
2567 [out, retval] IA2TextSegment *newText
2570 /** @brief Returns any removed text.
2572 Provided for use by the IA2_EVENT_TEXT_REMOVED/UPDATED event handlers.
2574 This data is only guaranteed to be valid while the thread notifying the event
2575 continues. Once the handler has returned, the validity of the data depends on
2576 how the server manages the life cycle of its objects. Also, note that the server
2577 may have different life cycle management strategies for controls depending on
2578 whether or not a control manages its children. Lists, trees, and tables can have
2579 a large number of children and thus it's possible that the child objects for those
2580 controls would only be created as needed. Servers should document their life cycle
2581 strategy as this will be of interest to assistive technology or script engines
2582 accessing data out of process or from other threads. Servers only need to save the
2583 last removed block of text and a scope of the entire application is adequate.
2585 @param [out] oldText
2586 The text that was just removed.
2587 @retval S_OK
2588 @retval S_FALSE if there is nothing to return, [out] value is NULL
2590 [propget] HRESULT oldText
2592 [out, retval] IA2TextSegment *oldText
2596 /*************************************************************************
2598 * File Name (AccessibleEditableText.idl)
2600 * IAccessible2 IDL Specification
2602 * Copyright (c) 2007, 2010 Linux Foundation
2603 * Copyright (c) 2006 IBM Corporation
2604 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
2605 * All rights reserved.
2608 * Redistribution and use in source and binary forms, with or without
2609 * modification, are permitted provided that the following conditions
2610 * are met:
2612 * 1. Redistributions of source code must retain the above copyright
2613 * notice, this list of conditions and the following disclaimer.
2615 * 2. Redistributions in binary form must reproduce the above
2616 * copyright notice, this list of conditions and the following
2617 * disclaimer in the documentation and/or other materials
2618 * provided with the distribution.
2620 * 3. Neither the name of the Linux Foundation nor the names of its
2621 * contributors may be used to endorse or promote products
2622 * derived from this software without specific prior written
2623 * permission.
2625 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
2626 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
2627 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
2628 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2629 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
2630 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2631 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2632 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2633 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2634 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2635 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2636 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
2637 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2639 * This BSD License conforms to the Open Source Initiative "Simplified
2640 * BSD License" as published at:
2641 * http://www.opensource.org/licenses/bsd-license.php
2643 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
2644 * mark may be used in accordance with the Linux Foundation Trademark
2645 * Policy to indicate compliance with the IAccessible2 specification.
2647 ************************************************************************/
2649 import "objidl.idl";
2650 import "oaidl.idl";
2651 import "oleacc.idl";
2654 /** @brief This interface provides clipboard capability to text objects.
2656 This interface is typically used in conjunction with the IAccessibleText
2657 interface and complements that interface with the additional capability of
2658 clipboard operations. Note that even a read only text object can support
2659 the copy capability so this interface is not limited to editable objects.
2661 The substrings used with this interface are specified as follows:
2662 If startOffset is less than endOffset, the substring starts with the
2663 character at startOffset and ends with the character just before endOffset.
2664 If endOffset is lower than startOffset, the result is the same as a call
2665 with the two arguments exchanged. The whole text can be defined by passing
2666 the indices zero and IAccessibleText::nCharacters. If both indices have the
2667 same value, an empty string is defined.
2669 Refer to the @ref _specialOffsets
2670 "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
2671 for information about a special offset constant that can be used in %IAccessibleEditableText methods.
2673 [object, uuid(A59AA09A-7011-4b65-939D-32B1FB5547E3)]
2674 interface IAccessibleEditableText : IUnknown
2677 /** @brief Copies the text range into the clipboard.
2679 The specified text between the two given indices is copied into the
2680 system clipboard.
2682 @param [in] startOffset
2683 Start index of the text to moved into the clipboard.
2684 The valid range is 0..length.
2685 @param [in] endOffset
2686 End index of the text to moved into the clipboard.
2687 The valid range is 0..length.
2688 @retval S_OK
2689 @retval E_INVALIDARG if bad [in] passed
2691 HRESULT copyText
2693 [in] long startOffset,
2694 [in] long endOffset
2697 /** @brief Deletes a range of text.
2699 The text between and including the two given indices is deleted
2700 from the text represented by this object.
2702 @param [in] startOffset
2703 Start index of the text to be deleted.
2704 The valid range is 0..length.
2705 @param [in] endOffset
2706 End index of the text to be deleted.
2707 The valid range is 0..length.
2708 @retval S_OK
2709 @retval E_INVALIDARG if bad [in] passed
2711 HRESULT deleteText
2713 [in] long startOffset,
2714 [in] long endOffset
2717 /** @brief Inserts text at the specified position.
2719 The specified string is inserted at the given index into the text
2720 represented by this object.
2722 @param [in] offset
2723 Index at which to insert the text.
2724 The valid range is 0..length.
2725 @param [in] text
2726 Text that is inserted.
2727 @retval S_OK
2728 @retval E_INVALIDARG if bad [in] passed
2730 HRESULT insertText
2732 [in] long offset,
2733 [in] BSTR *text
2736 /** @brief Deletes a range of text and copies it to the clipboard.
2738 The text between the two given indices is deleted from the text
2739 represented by this object and copied to the clipboard.
2741 @param [in] startOffset
2742 Start index of the text to be deleted.
2743 The valid range is 0..length.
2744 @param [in] endOffset
2745 End index of the text to be deleted.
2746 The valid range is 0..length.
2747 @retval S_OK
2748 @retval E_INVALIDARG if bad [in] passed
2750 HRESULT cutText
2752 [in] long startOffset,
2753 [in] long endOffset
2756 /** @brief Pastes text from the clipboard.
2758 The text in the system clipboard is pasted into the text represented
2759 by this object at the given index. This method is similar to the
2760 IAccessibleEditableText::insertText method. If the index is not valid
2761 the system clipboard text is not inserted.
2763 @param [in] offset
2764 Index at which to insert the text from the system clipboard into
2765 the text represented by this object.
2766 The valid range is 0..length.
2767 @retval S_OK
2768 @retval E_INVALIDARG if bad [in] passed
2770 HRESULT pasteText
2772 [in] long offset
2775 /** @brief Replaces text.
2777 The text between the two given indices is replaced by the specified
2778 replacement string. This method is equivalent to calling first
2779 IAccessibleEditableText::deleteText with the two indices and then
2780 calling IAccessibleEditableText::insertText with the replacement text
2781 at the start index.
2783 @param [in] startOffset
2784 Start index of the text to be replaced.
2785 The valid range is 0..length.
2786 @param [in] endOffset
2787 Start index of the text to be replaced.
2788 The valid range is 0..length.
2789 @param [in] text
2790 The Text that replaces the text between the given indices.
2791 @retval S_OK
2792 @retval E_INVALIDARG if bad [in] passed
2794 HRESULT replaceText
2796 [in] long startOffset,
2797 [in] long endOffset,
2798 [in] BSTR *text
2801 /** @brief Replaces the attributes of a text range by the given set of attributes.
2803 Sets the attributes for the text between the two given indices. The old
2804 attributes are replaced by the new list of attributes.
2806 @param [in] startOffset
2807 Start index of the text whose attributes are modified.
2808 The valid range is 0..length.
2809 @param [in] endOffset
2810 Start index of the text whose attributes are modified.
2811 The valid range is 0..length.
2812 @param [in] attributes
2813 Set of attributes that replaces the old list of attributes of
2814 the specified text portion.
2815 @retval S_OK
2816 @retval E_INVALIDARG if bad [in] passed
2818 HRESULT setAttributes
2820 [in] long startOffset,
2821 [in] long endOffset,
2822 [in] BSTR *attributes
2826 /*************************************************************************
2828 * File Name (AccessibleHyperlink.idl)
2830 * IAccessible2 IDL Specification
2832 * Copyright (c) 2007, 2010 Linux Foundation
2833 * Copyright (c) 2006 IBM Corporation
2834 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
2835 * All rights reserved.
2838 * Redistribution and use in source and binary forms, with or without
2839 * modification, are permitted provided that the following conditions
2840 * are met:
2842 * 1. Redistributions of source code must retain the above copyright
2843 * notice, this list of conditions and the following disclaimer.
2845 * 2. Redistributions in binary form must reproduce the above
2846 * copyright notice, this list of conditions and the following
2847 * disclaimer in the documentation and/or other materials
2848 * provided with the distribution.
2850 * 3. Neither the name of the Linux Foundation nor the names of its
2851 * contributors may be used to endorse or promote products
2852 * derived from this software without specific prior written
2853 * permission.
2855 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
2856 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
2857 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
2858 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2859 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
2860 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2861 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2862 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2863 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2864 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2865 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2866 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
2867 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2869 * This BSD License conforms to the Open Source Initiative "Simplified
2870 * BSD License" as published at:
2871 * http://www.opensource.org/licenses/bsd-license.php
2873 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
2874 * mark may be used in accordance with the Linux Foundation Trademark
2875 * Policy to indicate compliance with the IAccessible2 specification.
2877 ************************************************************************/
2879 import "objidl.idl";
2880 import "oaidl.idl";
2881 import "oleacc.idl";
2884 /** @brief This interface represents hyperlinks.
2886 This interface represents a hyperlink associated with a single substring
2887 of text or single non-text object. Non-text objects can have either a
2888 single link or a collection of links such as when the non-text object is
2889 an image map.
2891 Linked objects and anchors are implementation dependent. This interface is derived
2892 from IAccessibleAction. IAccessibleAction::nActions is one greater than the
2893 maximum value for the indices used with the methods of this interface.
2895 Furthermore, the object that implements this interface has to be connected
2896 implicitly or explicitly with an object that implements IAccessibleText.
2897 IAccessibleHyperlink::startIndex and IAccessibleHyperlink::endIndex are
2898 indices with respect to the text exposed by IAccessibleText.
2900 This interface provides access to a single object which can have multiple actions.
2901 An example is an image map which is an image with multiple links each of which is
2902 associated with a separate non-overlapping area of the image. This interface could
2903 also be applied to other kinds of objects with multiple actions such as "smart tags"
2904 which are objects, typically strings, which have multiple actions such as
2905 "Activate URI", "Bookmark URI", etc.
2907 An interesting use case is an image map where each area is associated with multiple
2908 actions, e.g. an image map of smart tags. In this case you would have to implement
2909 two levels of accessible hyperlinks. The first level hyperlinks would only implement
2910 anchor and anchorTarget. The anchors would all reference the image object. The
2911 anchorTargets would reference the second level accessible hyperlink objects. None
2912 of the IAccessibleAction methods would be implemented on the first level hyperlink
2913 objects. The second level hyperlink objects would implement the IAccessibleAction
2914 methods. Their anchors would also reference the image object and their anchorTargets
2915 would reference URLs or the objects that would be activated.
2917 This use case demonstrates that in some cases there is no need for IAccessibleHyperlink
2918 to derive from IAccessibleAction. As a result it may be removed in a later version of
2919 the IDL and it is suggested that implementations should not rely on the inheritance.
2922 [object, uuid(01C20F2B-3DD2-400f-949F-AD00BDAB1D41)]
2923 interface IAccessibleHyperlink : IAccessibleAction
2926 /** @brief Returns an object that represents the link anchor, as appropriate
2927 for the link at the specified index.
2928 @param [in] index
2929 A 0 based index identifies the anchor when, as in the case of an image map,
2930 there is more than one link represented by this object. The valid maximal
2931 index is indicated by IAccessibleAction::nActions.
2932 @param [out] anchor
2933 This is an implementation dependent value. For example, for a text link this
2934 method could return the substring of the containing string where the substring
2935 is overridden with link behavior, and for an image link this method could return
2936 an IUnknown VARIANT for IAccessibleImage. See the section about
2937 @ref _variants "VARIANTs" for additional information.
2938 @retval S_OK
2939 @retval S_FALSE if there is nothing to return, [out] value is NULL
2940 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
2942 [propget] HRESULT anchor
2944 [in] long index,
2945 [out, retval] VARIANT *anchor
2948 /** @brief Returns an object representing the target of the link, as appropriate
2949 for the link at the specified index.
2950 @param [in] index
2951 A 0 based index identifies the anchor when, as in the case of an image map,
2952 there is more than one link represented by this object. The valid maximal
2953 index is indicated by IAccessibleAction::nActions.
2954 @param [out] anchorTarget
2955 This is an implementation dependent value. For example this method could
2956 return a BSTR VARIANT of the URI. Alternatively this method could return an
2957 IUnknown VARIANT of a COM interface representing a target object to be
2958 activated when the link is activated. See the section about
2959 @ref _variants "VARIANTs" for additional information.
2960 @retval S_OK
2961 @retval S_FALSE if there is nothing to return, [out] value is NULL
2962 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
2964 [propget] HRESULT anchorTarget
2966 [in] long index,
2967 [out, retval] VARIANT *anchorTarget
2970 /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink starts.
2972 The returned value is related to the IAccessibleText interface of the object that
2973 owns this hyperlink.
2974 @param [out] index
2975 @retval S_OK
2977 [propget] HRESULT startIndex
2979 [out, retval] long *index
2982 /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink ends.
2984 The returned value is related to the IAccessibleText interface of the object that
2985 owns this hyperlink. The character at the index is not part of the hypertext.
2986 @param [out] index
2987 @retval S_OK
2989 [propget] HRESULT endIndex
2991 [out, retval] long *index
2994 /** @brief Returns whether the target object referenced by this link is still valid.
2996 This is a volatile state that may change without sending an appropriate event.
2997 Returns TRUE if the referenced target is still valid and FALSE otherwise.
2999 This has also been used to indicate whether or not the URI of the anchorTarget
3000 is malformed.
3002 Note: This method is not being used, is deprecated, and should not be implemented or
3003 used. It is likely that this method will be removed in a later version of the IDL.
3005 @param [out] valid
3006 @retval S_OK
3007 @retval S_FALSE if there is nothing to return, [out] value is FALSE
3009 [propget] HRESULT valid
3011 [out, retval] boolean *valid
3014 /*************************************************************************
3016 * File Name (AccessibleHypertext.idl)
3018 * IAccessible2 IDL Specification
3020 * Copyright (c) 2007, 2010 Linux Foundation
3021 * Copyright (c) 2006 IBM Corporation
3022 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
3023 * All rights reserved.
3026 * Redistribution and use in source and binary forms, with or without
3027 * modification, are permitted provided that the following conditions
3028 * are met:
3030 * 1. Redistributions of source code must retain the above copyright
3031 * notice, this list of conditions and the following disclaimer.
3033 * 2. Redistributions in binary form must reproduce the above
3034 * copyright notice, this list of conditions and the following
3035 * disclaimer in the documentation and/or other materials
3036 * provided with the distribution.
3038 * 3. Neither the name of the Linux Foundation nor the names of its
3039 * contributors may be used to endorse or promote products
3040 * derived from this software without specific prior written
3041 * permission.
3043 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
3044 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
3045 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
3046 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
3047 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
3048 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3049 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
3050 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
3051 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3052 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
3053 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
3054 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
3055 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3057 * This BSD License conforms to the Open Source Initiative "Simplified
3058 * BSD License" as published at:
3059 * http://www.opensource.org/licenses/bsd-license.php
3061 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
3062 * mark may be used in accordance with the Linux Foundation Trademark
3063 * Policy to indicate compliance with the IAccessible2 specification.
3065 ************************************************************************/
3067 import "objidl.idl";
3068 import "oaidl.idl";
3069 import "oleacc.idl";
3073 /** @brief This interface exposes information about hypertext in a document.
3075 The %IAccessibleHypertext interface is the main interface to expose
3076 hyperlinks in a document, typically a text document, that are used
3077 to reference other documents. A typical implementation is to implement
3078 this interface on the smallest text object such as a paragraph of text.
3080 [object, uuid(6B4F8BBF-F1F2-418a-B35E-A195BC4103B9)]
3081 interface IAccessibleHypertext : IAccessibleText
3084 /** @brief Returns the number of links and link groups contained within this hypertext
3085 paragraph.
3086 @param [out] hyperlinkCount
3087 The number of links and link groups within this hypertext paragraph.
3088 Returns 0 if there is no link.
3089 @retval S_OK
3091 [propget] HRESULT nHyperlinks
3093 [out, retval] long *hyperlinkCount
3096 /** @brief Returns the specified link.
3098 The returned IAccessibleHyperlink object encapsulates the hyperlink and
3099 provides several kinds of information describing it.
3100 @param [in] index
3101 This 0 based index specifies the hyperlink to return.
3102 @param [out] hyperlink
3103 If the given index is valid, i.e. lies in the interval from 0 to the number
3104 of links minus one, a reference to the specified hyperlink object is returned.
3105 If the index is invalid then a NULL pointer is returned.
3106 @retval S_OK
3107 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3109 [propget] HRESULT hyperlink
3111 [in] long index,
3112 [out, retval] IAccessibleHyperlink **hyperlink
3115 /** @brief Returns the index of the hyperlink that is associated with this character index.
3117 This is the case when a link spans the given character index.
3118 @param [in] charIndex
3119 A 0 based index of the character for which to return the link index. If
3120 IAccessibleText is used to represent the text containing the link, then the
3121 character index is only valid if it is greater than or equal to zero and
3122 lower than the number of characters in the text.
3123 @param [out] hyperlinkIndex
3124 Returns the 0 based index of the hyperlink that is associated with this
3125 character index, or -1 if charIndex is not on a link.
3126 @retval S_OK
3127 @retval S_FALSE if there is nothing to return, [out] value is -1
3128 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3130 [propget] HRESULT hyperlinkIndex
3132 [in] long charIndex,
3133 [out, retval] long *hyperlinkIndex
3137 /*************************************************************************
3139 * File Name (AccessibleTable.idl)
3141 * IAccessible2 IDL Specification
3143 * Copyright (c) 2007, 2010 Linux Foundation
3144 * Copyright (c) 2006 IBM Corporation
3145 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
3146 * All rights reserved.
3149 * Redistribution and use in source and binary forms, with or without
3150 * modification, are permitted provided that the following conditions
3151 * are met:
3153 * 1. Redistributions of source code must retain the above copyright
3154 * notice, this list of conditions and the following disclaimer.
3156 * 2. Redistributions in binary form must reproduce the above
3157 * copyright notice, this list of conditions and the following
3158 * disclaimer in the documentation and/or other materials
3159 * provided with the distribution.
3161 * 3. Neither the name of the Linux Foundation nor the names of its
3162 * contributors may be used to endorse or promote products
3163 * derived from this software without specific prior written
3164 * permission.
3166 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
3167 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
3168 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
3169 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
3170 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
3171 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3172 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
3173 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
3174 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3175 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
3176 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
3177 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
3178 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3180 * This BSD License conforms to the Open Source Initiative "Simplified
3181 * BSD License" as published at:
3182 * http://www.opensource.org/licenses/bsd-license.php
3184 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
3185 * mark may be used in accordance with the Linux Foundation Trademark
3186 * Policy to indicate compliance with the IAccessible2 specification.
3188 ************************************************************************/
3190 import "objidl.idl";
3191 import "oaidl.idl";
3192 import "oleacc.idl";
3196 /** @brief This interface gives access to a two-dimensional table.
3198 Typically all accessible objects that represent cells or cell-clusters of a table
3199 will be at the same time children of the table. In this case IAccessible2::indexInParent
3200 will return the child index which then can be used when calling IAccessibleTable::rowIndex
3201 and IAccessibleTable::columnIndex.
3203 However, in some cases that kind of implementation will not be possible. When
3204 the table cells are not direct children of a table, the object representing
3205 the cell can define a "table-cell-index" object attribute identifying the 0
3206 based table cell index. This object attribute is obtained by parsing the
3207 attribute string returned by IAccessible2::attributes. The "table-cell-index"
3208 attribute can be used just like a child index of the typical case. ATs should
3209 first test for the presence of the "table-cell-index" attribute and if it is not
3210 present then IAccessible2::indexInParent can be used as in the typical case
3211 where cells are direct children of the table.
3213 The range of valid coordinates for this interface are implementation dependent.
3214 However, that range includes at least the intervals from the from the first row
3215 or column with the index 0 up to the last (but not including) used row or column
3216 as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns.
3218 Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell
3219 rather than this interface.
3221 [object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)]
3222 interface IAccessibleTable : IUnknown
3225 /** @brief Returns the accessible object at the specified row and column in
3226 the table. This object could be an IAccessible or an IAccessible2.
3227 @param [in] row
3228 The 0 based row index for which to retrieve the cell.
3229 @param [in] column
3230 The 0 based column index for which to retrieve the cell.
3231 @param [out] accessible
3232 If both row and column index are valid then the corresponding accessible
3233 object is returned that represents the requested cell regardless of whether
3234 the cell is currently visible (on the screen).
3235 @retval S_OK
3236 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3238 [propget] HRESULT accessibleAt
3240 [in] long row,
3241 [in] long column,
3242 [out, retval] IUnknown **accessible
3245 /** @brief Returns the caption for the table. The returned object could be
3246 an IAccessible or an IAccessible2.
3247 @param [out] accessible
3248 If the table has a caption then a reference to it is returned, else a NULL
3249 pointer is returned.
3250 @retval S_OK
3251 @retval S_FALSE if there is nothing to return, [out] value is NULL
3253 [propget] HRESULT caption
3255 [out, retval] IUnknown **accessible
3258 /** @brief Translates the given row and column indexes into the corresponding cell index.
3259 @param [in] rowIndex
3260 0 based row index for the cell.
3261 @param [in] columnIndex
3262 0 based column index for the cell.
3263 @param [out] cellIndex
3264 Returns the 0 based index of the cell at the specified row and column indexes.
3265 @retval S_OK
3266 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
3267 @note The returned value is not necessarily a child index of the immediate parent.
3268 In cases where the table cells are not direct children of the table the index
3269 is actually the cell index, i.e. conceptually it's an index into a one dimensional
3270 array of cells laid out in row order.
3272 [propget] HRESULT childIndex
3274 [in] long rowIndex,
3275 [in] long columnIndex,
3276 [out, retval] long *cellIndex
3279 /** @brief Returns the description text of the specified column in the table.
3280 @param [in] column
3281 The 0 based index of the column for which to retrieve the description.
3282 @param [out] description
3283 Returns the description text of the specified column in the table if such a
3284 description exists. Otherwise a NULL pointer is returned.
3285 @retval S_OK
3286 @retval S_FALSE if there is nothing to return, [out] value is NULL
3287 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3289 [propget] HRESULT columnDescription
3291 [in] long column,
3292 [out, retval] BSTR *description
3295 /** @brief Returns the number of columns occupied by the accessible object
3296 at the specified row and column in the table.
3298 The result is greater than 1 if the specified cell spans multiple columns.
3299 @param [in] row
3300 0 based row index of the accessible for which to return the column extent.
3301 @param [in] column
3302 0 based column index of the accessible for which to return the column extent.
3303 @param [out] nColumnsSpanned
3304 Returns the 1 based column extent of the specified cell.
3305 @retval S_OK
3306 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
3308 [propget] HRESULT columnExtentAt
3310 [in] long row,
3311 [in] long column,
3312 [out, retval] long *nColumnsSpanned
3315 /** @brief Returns the column headers as an %IAccessibleTable object.
3317 Content and size of the returned table are implementation dependent.
3318 @param [out] accessibleTable
3319 The column header
3320 @param [out] startingRowIndex
3321 The 0 based row index where the header starts, usually 0.
3322 @retval S_OK
3323 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
3325 [propget] HRESULT columnHeader
3327 [out] IAccessibleTable **accessibleTable,
3328 [out, retval] long *startingRowIndex
3331 /** @brief Translates the given cell index into the corresponding column index.
3332 @param [in] cellIndex
3333 0 based index of the cell in the parent or closest ancestor table. Typically this
3334 is the value returned from IAccessible2::indexInParent, but in the case where the
3335 table cells are not direct children of the table this is the cell index specified
3336 by the "table-cell-index" object attribute obtained from parsing the attributes
3337 string returned by calling IAccessible2::attributes on the cell object.
3338 @param [out] columnIndex
3339 Returns the 0 based column index of the cell of the specified child or the index of
3340 the first column if the child spans multiple columns.
3341 @retval S_OK
3342 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
3344 [propget] HRESULT columnIndex
3346 [in] long cellIndex,
3347 [out, retval] long *columnIndex
3350 /** @brief Returns the total number of columns in table
3351 @param [out] columnCount
3352 Number of columns in table (including columns outside the current viewport)
3353 @retval S_OK
3355 [propget] HRESULT nColumns
3357 [out, retval] long *columnCount
3360 /** @brief Returns the total number of rows in table
3361 @param [out] rowCount
3362 Number of rows in table (including rows outside the current viewport)
3363 @retval S_OK
3365 [propget] HRESULT nRows
3367 [out, retval] long *rowCount
3370 /** @brief Returns the total number of selected cells
3371 @param [out] cellCount
3372 Number of cells currently selected
3373 @retval S_OK
3375 [propget] HRESULT nSelectedChildren
3377 [out, retval] long *cellCount
3380 /** @brief Returns the total number of selected columns
3381 @param [out] columnCount
3382 Number of columns currently selected
3383 @retval S_OK
3385 [propget] HRESULT nSelectedColumns
3387 [out, retval] long *columnCount
3390 /** @brief Returns the total number of selected rows
3391 @param [out] rowCount
3392 Number of rows currently selected
3393 @retval S_OK
3395 [propget] HRESULT nSelectedRows
3397 [out, retval] long *rowCount
3400 /** @brief Returns the description text of the specified row in the table.
3401 @param [in] row
3402 The 0 based index of the row for which to retrieve the description.
3403 @param [out] description
3404 Returns the description text of the specified row in the table if such a
3405 description exists. Otherwise a NULL pointer is returned.
3406 @retval S_OK
3407 @retval S_FALSE if there is nothing to return, [out] value is NULL
3408 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3410 [propget] HRESULT rowDescription
3412 [in] long row,
3413 [out, retval] BSTR *description
3416 /** @brief Returns the number of rows occupied by the accessible object
3417 at the specified row and column in the table.
3419 The result is greater than 1 if the specified cell spans multiple rows.
3420 @param [in] row
3421 0 based row index of the accessible for which to return the row extent.
3422 @param [in] column
3423 0 based column index of the accessible for which to return the row extent.
3424 @param [out] nRowsSpanned
3425 Returns the row extent of the specified cell.
3426 @retval S_OK
3427 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
3429 [propget] HRESULT rowExtentAt
3431 [in] long row,
3432 [in] long column,
3433 [out, retval] long *nRowsSpanned
3436 /** @brief Returns the row headers as an %IAccessibleTable object.
3438 Content and size of the returned table are implementation dependent.
3439 @param [out] accessibleTable
3440 The row header.
3441 @param [out] startingColumnIndex
3442 The 0 based column index where the header starts, usually 0.
3443 @retval S_OK
3444 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
3446 [propget] HRESULT rowHeader
3448 [out] IAccessibleTable **accessibleTable,
3449 [out, retval] long *startingColumnIndex
3452 /** @brief Translates the given cell index into a row index.
3453 @param [in] cellIndex
3454 0 based index of the cell in the parent or closest ancestor table. Typically this
3455 is the value returned from IAccessible2::indexInParent, but in the case where the
3456 table cells are not direct children of the table this is the cell index specified
3457 by the "table-cell-index" object attribute obtained from parsing the attributes
3458 string returned by calling IAccessible2::attributes on the cell object.
3459 @param [out] rowIndex
3460 0 based row index
3461 @retval S_OK
3462 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
3464 [propget] HRESULT rowIndex
3466 [in] long cellIndex,
3467 [out, retval] long *rowIndex
3470 /** @brief Returns a list of cell indexes currently selected (0 based).
3471 @param [in] maxChildren
3472 This parameter is ignored. Refer to @ref _arrayConsideration
3473 "Special Consideration when using Arrays" for more details.
3474 @param [out] children
3475 An array of cell indexes of selected cells (each index is 0 based),
3476 allocated by the server. Free it with CoTaskMemFree.
3477 @param [out] nChildren
3478 The number of cell indexes returned; the size of the returned array.
3479 @retval S_OK
3480 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
3482 [propget] HRESULT selectedChildren
3484 [in] long maxChildren,
3485 [out, size_is(,maxChildren), length_is(,*nChildren)] long **children,
3486 [out, retval] long *nChildren
3489 /** @brief Returns a list of column indexes currently selected (0 based).
3490 @param [in] maxColumns
3491 This parameter is ignored. Refer to @ref _arrayConsideration
3492 "Special Consideration when using Arrays" for more details.
3493 @param [out] columns
3494 An array of column indexes of selected columns (each index is 0 based), allocated
3495 by the server. Free it with CoTaskMemFree.
3496 @param [out] nColumns
3497 The number of column indexes returned; the size of the returned array.
3498 @retval S_OK
3499 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
3501 [propget] HRESULT selectedColumns
3503 [in] long maxColumns,
3504 [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns,
3505 [out, retval] long *nColumns
3508 /** @brief Returns a list of row indexes currently selected (0 based).
3509 @param [in] maxRows
3510 This parameter is ignored. Refer to @ref _arrayConsideration
3511 "Special Consideration when using Arrays" for more details.
3512 @param [out] rows
3513 An array of row indexes of selected rows (each index is 0 based), allocated
3514 by the server. Free it with CoTaskMemFree.
3515 @param [out] nRows
3516 The number of row indexes returned; the size of the returned array.
3517 @retval S_OK
3518 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
3520 [propget] HRESULT selectedRows
3522 [in] long maxRows,
3523 [out, size_is(,maxRows), length_is(,*nRows)] long **rows,
3524 [out, retval] long *nRows
3527 /** @brief Returns the summary description of the table. The returned object could be
3528 an IAccessible or an IAccessible2.
3529 @param [out] accessible
3530 Returns a reference to an implementation dependent accessible object
3531 representing the table's summary or a NULL pointer if the table
3532 does not support a summary.
3533 @retval S_OK
3534 @retval S_FALSE if there is nothing to return, [out] value is NULL
3536 [propget] HRESULT summary
3538 [out, retval] IUnknown **accessible
3541 /** @brief Returns a boolean value indicating whether the specified column is
3542 completely selected.
3543 @param [in] column
3544 0 based index of the column for which to determine whether it is selected.
3545 @param [out] isSelected
3546 Returns TRUE if the specified column is selected completely and FALSE otherwise.
3547 @retval S_OK
3548 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
3550 [propget] HRESULT isColumnSelected
3552 [in] long column,
3553 [out, retval] boolean *isSelected
3556 /** @brief Returns a boolean value indicating whether the specified row is completely
3557 selected.
3558 @param [in] row
3559 0 based index of the row for which to determine whether it is selected.
3560 @param [out] isSelected
3561 Returns TRUE if the specified row is selected completely and FALSE otherwise.
3562 @retval S_OK
3563 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
3565 [propget] HRESULT isRowSelected
3567 [in] long row,
3568 [out, retval] boolean *isSelected
3571 /** @brief Returns a boolean value indicating whether the specified cell is selected.
3572 @param [in] row
3573 0 based index of the row for the cell to determine whether it is selected.
3574 @param [in] column
3575 0 based index of the column for the cell to determine whether it is selected.
3576 @param [out] isSelected
3577 Returns TRUE if the specified cell is selected and FALSE otherwise.
3578 @retval S_OK
3579 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
3581 [propget] HRESULT isSelected
3583 [in] long row,
3584 [in] long column,
3585 [out, retval] boolean *isSelected
3588 /** @brief Selects a row and unselects all previously selected rows.
3589 @param [in] row
3590 0 based index of the row to be selected.
3591 @retval S_OK
3592 @retval E_INVALIDARG if bad [in] passed
3594 HRESULT selectRow
3596 [in] long row
3599 /** @brief Selects a column and unselects all previously selected columns.
3600 @param [in] column
3601 0 based index of the column to be selected.
3602 @retval S_OK
3603 @retval E_INVALIDARG if bad [in] passed
3605 HRESULT selectColumn
3607 [in] long column
3610 /** @brief Unselects one row, leaving other selected rows selected (if any).
3611 @param [in] row
3612 0 based index of the row to be unselected.
3613 @retval S_OK
3614 @retval E_INVALIDARG if bad [in] passed
3616 HRESULT unselectRow
3618 [in] long row
3621 /** @brief Unselects one column, leaving other selected columns selected (if any).
3622 @param [in] column
3623 0 based index of the column to be unselected.
3624 @retval S_OK
3625 @retval E_INVALIDARG if bad [in] passed
3627 HRESULT unselectColumn
3629 [in] long column
3632 /** @brief Given a cell index, gets the row and column indexes and extents of a cell
3633 and whether or not it is selected.
3635 This is a convenience function. It is not mandatory to implement it.
3636 @param [in] index
3637 0 based index of this cell in the table.
3638 @param [out] row
3639 0 based row index.
3640 @param [out] column
3641 0 based column index.
3642 @param [out] rowExtents
3643 Number of cells spanned by this cell in this row.
3644 @param [out] columnExtents
3645 Number of cells spanned by this cell in this column.
3646 @param [out] isSelected
3647 Indicates if the specified cell is selected.
3648 @retval S_OK
3649 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively
3651 [propget] HRESULT rowColumnExtentsAtIndex
3653 [in] long index,
3654 [out] long *row,
3655 [out] long *column,
3656 [out] long *rowExtents,
3657 [out] long *columnExtents,
3658 [out, retval] boolean *isSelected
3661 /** @brief Returns the type and extents describing how a table changed.
3663 Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
3665 This data is only guaranteed to be valid while the thread notifying the event
3666 continues. Once the handler has returned, the validity of the data depends on
3667 how the server manages the life cycle of its objects. Also, note that the server
3668 may have different life cycle management strategies for controls depending on
3669 whether or not a control manages its children. Lists, trees, and tables can have
3670 a large number of children and thus it's possible that the child objects for those
3671 controls would only be created as needed. Servers should document their life cycle
3672 strategy as this will be of interest to assistive technology or script engines
3673 accessing data out of process or from other threads. Servers only need to save the
3674 most recent row and column values associated with the change and a scope of the
3675 entire application is adequate.
3677 @param [out] modelChange
3678 A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
3679 @retval S_OK
3680 @retval S_FALSE if there is nothing to return, [out] value is NULL
3682 [propget] HRESULT modelChange
3684 [out, retval] IA2TableModelChange *modelChange
3688 /*************************************************************************
3690 * File Name (AccessibleTable2.idl)
3692 * IAccessible2 IDL Specification
3694 * Copyright (c) 2007, 2010 Linux Foundation
3695 * Copyright (c) 2006 IBM Corporation
3696 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
3697 * All rights reserved.
3700 * Redistribution and use in source and binary forms, with or without
3701 * modification, are permitted provided that the following conditions
3702 * are met:
3704 * 1. Redistributions of source code must retain the above copyright
3705 * notice, this list of conditions and the following disclaimer.
3707 * 2. Redistributions in binary form must reproduce the above
3708 * copyright notice, this list of conditions and the following
3709 * disclaimer in the documentation and/or other materials
3710 * provided with the distribution.
3712 * 3. Neither the name of the Linux Foundation nor the names of its
3713 * contributors may be used to endorse or promote products
3714 * derived from this software without specific prior written
3715 * permission.
3717 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
3718 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
3719 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
3720 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
3721 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
3722 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3723 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
3724 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
3725 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3726 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
3727 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
3728 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
3729 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3731 * This BSD License conforms to the Open Source Initiative "Simplified
3732 * BSD License" as published at:
3733 * http://www.opensource.org/licenses/bsd-license.php
3735 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
3736 * mark may be used in accordance with the Linux Foundation Trademark
3737 * Policy to indicate compliance with the IAccessible2 specification.
3739 ************************************************************************/
3741 import "objidl.idl";
3742 import "oaidl.idl";
3743 import "oleacc.idl";
3747 /** @brief This interface gives access to a two-dimensional table.
3749 Please also refer to the IAccessibleTableCell interface.
3751 If you want to support older applications you should also support the
3752 IAccessibleTable inteface.
3754 [object, uuid(6167f295-06f0-4cdd-a1fa-02e25153d869)]
3755 interface IAccessibleTable2 : IUnknown
3758 /** @brief Returns the accessible object at the specified row and column in
3759 the table. This object could be an IAccessible or an IAccessible2.
3760 @param [in] row
3761 The 0 based row index for which to retrieve the cell.
3762 @param [in] column
3763 The 0 based column index for which to retrieve the cell.
3764 @param [out] cell
3765 If both row and column index are valid then the corresponding accessible
3766 object is returned that represents the requested cell regardless of whether
3767 the cell is currently visible (on the screen).
3768 @retval S_OK
3769 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3771 [propget] HRESULT cellAt
3773 [in] long row,
3774 [in] long column,
3775 [out, retval] IUnknown **cell
3778 /** @brief Returns the caption for the table. The returned object could be
3779 an IAccessible or an IAccessible2.
3780 @param [out] accessible
3781 If the table has a caption then a reference to it is returned, else a NULL
3782 pointer is returned.
3783 @retval S_OK
3784 @retval S_FALSE if there is nothing to return, [out] value is NULL
3786 [propget] HRESULT caption
3788 [out, retval] IUnknown **accessible
3791 /** @brief Returns the description text of the specified column in the table.
3792 @param [in] column
3793 The 0 based index of the column for which to retrieve the description.
3794 @param [out] description
3795 Returns the description text of the specified column in the table if such a
3796 description exists. Otherwise a NULL pointer is returned.
3797 @retval S_OK
3798 @retval S_FALSE if there is nothing to return, [out] value is NULL
3799 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3801 [propget] HRESULT columnDescription
3803 [in] long column,
3804 [out, retval] BSTR *description
3808 /** @brief Returns the total number of columns in table
3809 @param [out] columnCount
3810 Number of columns in table (including columns outside the current viewport)
3811 @retval S_OK
3813 [propget] HRESULT nColumns
3815 [out, retval] long *columnCount
3818 /** @brief Returns the total number of rows in table
3819 @param [out] rowCount
3820 Number of rows in table (including rows outside the current viewport)
3821 @retval S_OK
3823 [propget] HRESULT nRows
3825 [out, retval] long *rowCount
3828 /** @brief Returns the total number of selected cells
3829 @param [out] cellCount
3830 Number of cells currently selected
3831 @retval S_OK
3833 [propget] HRESULT nSelectedCells
3835 [out, retval] long *cellCount
3838 /** @brief Returns the total number of selected columns
3839 @param [out] columnCount
3840 Number of columns currently selected
3841 @retval S_OK
3843 [propget] HRESULT nSelectedColumns
3845 [out, retval] long *columnCount
3848 /** @brief Returns the total number of selected rows
3849 @param [out] rowCount
3850 Number of rows currently selected
3851 @retval S_OK
3853 [propget] HRESULT nSelectedRows
3855 [out, retval] long *rowCount
3858 /** @brief Returns the description text of the specified row in the table.
3859 @param [in] row
3860 The 0 based index of the row for which to retrieve the description.
3861 @param [out] description
3862 Returns the description text of the specified row in the table if such a
3863 description exists. Otherwise a NULL pointer is returned.
3864 @retval S_OK
3865 @retval S_FALSE if there is nothing to return, [out] value is NULL
3866 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
3868 [propget] HRESULT rowDescription
3870 [in] long row,
3871 [out, retval] BSTR *description
3874 /** @brief Returns a list of accessibles currently selected.
3875 @param [out] cells
3876 Pointer to an array of references to selected accessibles. The array is
3877 allocated by the server. Free it with CoTaskMemFree.
3878 @param [out] nSelectedCells
3879 The number of accessibles returned; the size of the returned array.
3880 @retval S_OK
3881 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
3883 [propget] HRESULT selectedCells
3885 [out, size_is(,*nSelectedCells,)] IUnknown ***cells,
3886 [out, retval] long *nSelectedCells
3889 /** @brief Returns a list of column indexes currently selected (0 based).
3890 @param [out] selectedColumns
3891 A pointer to an array of column indexes of selected columns (each index is
3892 0 based). The array is allocated by the server. Free it with CoTaskMemFree.
3893 @param [out] nColumns
3894 The number of column indexes returned; the size of the returned array.
3895 @retval S_OK
3896 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
3898 [propget] HRESULT selectedColumns
3900 [out, size_is(,*nColumns)] long **selectedColumns,
3901 [out, retval] long *nColumns
3904 /** @brief Returns a list of row indexes currently selected (0 based).
3905 @param [out] selectedRows
3906 An array of row indexes of selected rows (each index is 0 based), allocated
3907 by the server. Free it with CoTaskMemFree.
3908 @param [out] nRows
3909 The number of row indexes returned; the size of the returned array.
3910 @retval S_OK
3911 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
3913 [propget] HRESULT selectedRows
3915 [out, size_is(,*nRows)] long **selectedRows,
3916 [out, retval] long *nRows
3919 /** @brief Returns the summary description of the table. The returned object could be
3920 an IAccessible or an IAccessible2.
3921 @param [out] accessible
3922 Returns a reference to an implementation dependent accessible object
3923 representing the table's summary or a NULL pointer if the table
3924 does not support a summary.
3925 @retval S_OK
3926 @retval S_FALSE if there is nothing to return, [out] value is NULL
3928 [propget] HRESULT summary
3930 [out, retval] IUnknown **accessible
3933 /** @brief Returns a boolean value indicating whether the specified column is
3934 completely selected.
3935 @param [in] column
3936 0 based index of the column for which to determine whether it is selected.
3937 @param [out] isSelected
3938 Returns TRUE if the specified column is selected completely and FALSE otherwise.
3939 @retval S_OK
3940 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
3942 [propget] HRESULT isColumnSelected
3944 [in] long column,
3945 [out, retval] boolean *isSelected
3948 /** @brief Returns a boolean value indicating whether the specified row is completely
3949 selected.
3950 @param [in] row
3951 0 based index of the row for which to determine whether it is selected.
3952 @param [out] isSelected
3953 Returns TRUE if the specified row is selected completely and FALSE otherwise.
3954 @retval S_OK
3955 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
3957 [propget] HRESULT isRowSelected
3959 [in] long row,
3960 [out, retval] boolean *isSelected
3963 /** @brief Selects a row and unselects all previously selected rows.
3965 The behavior should mimic that of the application, but for those applications
3966 which do not have a means in the GUI to select a full row of cells the behavior
3967 should be as follows: First any selected rows in the table are unselected. Then
3968 the entire row of cells for the specified row is selected. If any of the
3969 cells in the selected row span additional rows, the cells in those rows
3970 are also selected.
3971 @param [in] row
3972 0 based index of the row to be selected.
3973 @retval S_OK
3974 @retval E_INVALIDARG if bad [in] passed
3976 HRESULT selectRow
3978 [in] long row
3981 /** @brief Selects a column and unselects all previously selected columns.
3983 The behavior should mimic that of the application, but for those applications
3984 which do not have a means in the GUI to select a full column of cells the behavior
3985 should be as follows: First any selected columns in the table are unselected. Then
3986 the entire column of cells for the specified column is selected. If any of the
3987 cells in the selected column span additional columns, the cells in those columns
3988 are also selected.
3989 @param [in] column
3990 0 based index of the column to be selected.
3991 @retval S_OK
3992 @retval E_INVALIDARG if bad [in] passed
3994 HRESULT selectColumn
3996 [in] long column
3999 /** @brief Unselects one row, leaving other selected rows selected (if any).
4001 The behavior should mimic that of the application, but for those applications
4002 which do not have a means in the GUI to unselect a full row of cells the
4003 behavior should be as follows: The entire row of cells for the specified
4004 row is unselected. If any of the cells in the selected row span additional
4005 rows, the cells in those rows are also unselected.
4006 @param [in] row
4007 0 based index of the row to be unselected.
4008 @retval S_OK
4009 @retval E_INVALIDARG if bad [in] passed
4011 HRESULT unselectRow
4013 [in] long row
4016 /** @brief Unselects one column, leaving other selected columns selected (if any).
4018 The behavior should mimic that of the application, but for those applications
4019 which do not have a means in the GUI to unselect a full column of cells the
4020 behavior should be as follows: The entire column of cells for the specified
4021 column is unselected. If any of the cells in the selected column span additional
4022 columns, the cells in those columns are also unselected.
4023 @param [in] column
4024 0 based index of the column to be unselected.
4025 @retval S_OK
4026 @retval E_INVALIDARG if bad [in] passed
4028 HRESULT unselectColumn
4030 [in] long column
4033 /** @brief Returns the type and extents describing how a table changed.
4035 Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
4037 This data is only guaranteed to be valid while the thread notifying the event
4038 continues. Once the handler has returned, the validity of the data depends on
4039 how the server manages the life cycle of its objects. Also, note that the server
4040 may have different life cycle management strategies for controls depending on
4041 whether or not a control manages its children. Lists, trees, and tables can have
4042 a large number of children and thus it's possible that the child objects for those
4043 controls would only be created as needed. Servers should document their life cycle
4044 strategy as this will be of interest to assistive technology or script engines
4045 accessing data out of process or from other threads. Servers only need to save the
4046 most recent row and column values associated with the change and a scope of the
4047 entire application is adequate.
4049 @param [out] modelChange
4050 A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
4051 @retval S_OK
4052 @retval S_FALSE if there is nothing to return, [out] value is NULL
4054 [propget] HRESULT modelChange
4056 [out, retval] IA2TableModelChange *modelChange
4060 /*************************************************************************
4062 * File Name (AccessibleTableCell.idl)
4064 * IAccessible2 IDL Specification
4066 * Copyright (c) 2007, 2010 Linux Foundation
4067 * Copyright (c) 2006 IBM Corporation
4068 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
4069 * All rights reserved.
4072 * Redistribution and use in source and binary forms, with or without
4073 * modification, are permitted provided that the following conditions
4074 * are met:
4076 * 1. Redistributions of source code must retain the above copyright
4077 * notice, this list of conditions and the following disclaimer.
4079 * 2. Redistributions in binary form must reproduce the above
4080 * copyright notice, this list of conditions and the following
4081 * disclaimer in the documentation and/or other materials
4082 * provided with the distribution.
4084 * 3. Neither the name of the Linux Foundation nor the names of its
4085 * contributors may be used to endorse or promote products
4086 * derived from this software without specific prior written
4087 * permission.
4089 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
4090 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
4091 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4092 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
4093 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
4094 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4095 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
4096 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
4097 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4098 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
4099 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
4100 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
4101 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4103 * This BSD License conforms to the Open Source Initiative "Simplified
4104 * BSD License" as published at:
4105 * http://www.opensource.org/licenses/bsd-license.php
4107 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
4108 * mark may be used in accordance with the Linux Foundation Trademark
4109 * Policy to indicate compliance with the IAccessible2 specification.
4111 ************************************************************************/
4113 import "objidl.idl";
4114 import "oaidl.idl";
4115 import "oleacc.idl";
4118 /** @brief This interface gives access to the cells of a two-dimensional table.
4120 Please also refer to the IAccessibleTable2 interface.
4123 [object, uuid(594116B1-C99F-4847-AD06-0A7A86ECE645)]
4124 interface IAccessibleTableCell : IUnknown
4127 /** @brief Returns the number of columns occupied by this cell accessible.
4129 The result is greater than 1 if the specified cell spans multiple columns.
4130 @param [out] nColumnsSpanned
4131 Returns the 1 based column extent of the specified cell.
4132 @retval S_OK
4134 [propget] HRESULT columnExtent
4136 [out, retval] long *nColumnsSpanned
4139 /** @brief Returns the column headers as an array of cell accessibles.
4141 @param [out] cellAccessibles
4142 Pointer to an array of references to cell accessibles. The array is allocated
4143 by the server. Free it with CoTaskMemFree.
4144 @param [out] nColumnHeaderCells
4145 The number of accessibles returned; the size of the returned array.
4146 @retval S_OK
4147 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
4149 [propget] HRESULT columnHeaderCells
4151 [out, size_is(,*nColumnHeaderCells,)] IUnknown ***cellAccessibles,
4152 [out, retval] long *nColumnHeaderCells
4155 /** @brief Translates this cell accessible into the corresponding column index.
4157 @param [out] columnIndex
4158 Returns the 0 based column index of the cell of the specified cell or the index of
4159 the first column if the cell spans multiple columns.
4160 @retval S_OK
4162 [propget] HRESULT columnIndex
4164 [out, retval] long *columnIndex
4167 /** @brief Returns the number of rows occupied by this cell accessible.
4169 @param [out] nRowsSpanned
4170 Returns the row extent of the specified cell.
4171 @retval S_OK
4173 [propget] HRESULT rowExtent
4175 [out, retval] long *nRowsSpanned
4178 /** @brief Returns the row headers as an array of cell accessibles.
4180 @param [out] cellAccessibles
4181 Pointer to an array of references to cell accessibles. The array is allocated
4182 by the server. Free it with CoTaskMemFree.
4183 @param [out] nRowHeaderCells
4184 The number of accessibles returned; the size of the returned array.
4185 @retval S_OK
4186 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
4188 [propget] HRESULT rowHeaderCells
4190 [out, size_is(,*nRowHeaderCells,)] IUnknown ***cellAccessibles,
4191 [out, retval] long *nRowHeaderCells
4194 /** @brief Translates this cell accessible into the corresponding row index.
4196 @param [out] rowIndex
4197 Returns the 0 based row index of the specified cell or the index of
4198 the first row if the cell spans multiple rows.
4199 @retval S_OK
4201 [propget] HRESULT rowIndex
4203 [out, retval] long *rowIndex
4206 /** @brief Returns a boolean value indicating whether this cell is selected.
4208 @param [out] isSelected
4209 Returns TRUE if the specified cell is selected and FALSE otherwise.
4210 @retval S_OK
4212 [propget] HRESULT isSelected
4214 [out, retval] boolean *isSelected
4217 /** @brief Gets the row and column indexes and extents of this cell accessible
4218 and whether or not it is selected.
4220 This is a convenience function. It is not mandatory to implement it.
4221 @param [out] row
4222 0 based row index.
4223 @param [out] column
4224 0 based column index.
4225 @param [out] rowExtents
4226 Number of cells spanned by this cell in this row.
4227 @param [out] columnExtents
4228 Number of cells spanned by this cell in this column.
4229 @param [out] isSelected
4230 Indicates if the specified cell is selected.
4231 @retval S_OK
4233 [propget] HRESULT rowColumnExtents
4235 [out] long *row,
4236 [out] long *column,
4237 [out] long *rowExtents,
4238 [out] long *columnExtents,
4239 [out, retval] boolean *isSelected
4242 /** @brief Returns a reference to the accessbile of the containing table.
4244 @param [out] table
4245 Returns a reference to the IUnknown of the containing table.
4246 @retval S_OK
4248 [propget] HRESULT table
4250 [out, retval] IUnknown **table
4254 /*************************************************************************
4256 * File Name (AccessibleImage.idl)
4258 * IAccessible2 IDL Specification
4260 * Copyright (c) 2007, 2010 Linux Foundation
4261 * Copyright (c) 2006 IBM Corporation
4262 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
4263 * All rights reserved.
4266 * Redistribution and use in source and binary forms, with or without
4267 * modification, are permitted provided that the following conditions
4268 * are met:
4270 * 1. Redistributions of source code must retain the above copyright
4271 * notice, this list of conditions and the following disclaimer.
4273 * 2. Redistributions in binary form must reproduce the above
4274 * copyright notice, this list of conditions and the following
4275 * disclaimer in the documentation and/or other materials
4276 * provided with the distribution.
4278 * 3. Neither the name of the Linux Foundation nor the names of its
4279 * contributors may be used to endorse or promote products
4280 * derived from this software without specific prior written
4281 * permission.
4283 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
4284 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
4285 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4286 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
4287 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
4288 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4289 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
4290 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
4291 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4292 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
4293 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
4294 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
4295 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4297 * This BSD License conforms to the Open Source Initiative "Simplified
4298 * BSD License" as published at:
4299 * http://www.opensource.org/licenses/bsd-license.php
4301 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
4302 * mark may be used in accordance with the Linux Foundation Trademark
4303 * Policy to indicate compliance with the IAccessible2 specification.
4305 ************************************************************************/
4307 import "objidl.idl";
4308 import "oaidl.idl";
4309 import "oleacc.idl";
4312 /** @brief This interface represents images and icons.
4314 This interface is used for a representation of images like icons on buttons.
4315 %IAccessibleImage only needs to be implemented in certain situations. Some
4316 examples are:
4317 <ol>
4318 <li>The accessible name and description are not enough to fully
4319 describe the image, e.g. when the accessible description is used to define the
4320 behavior of an actionable image and the image itself conveys semantically
4321 significant information.
4322 <li>The user can edit the content that includes an
4323 image and therefore the user needs to be able to review the image's position.
4324 </ol>
4326 [object, uuid(FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE)]
4327 interface IAccessibleImage : IUnknown
4329 /** @brief Returns the localized description of the image.
4330 @param [out] description
4331 @retval S_OK
4332 @retval S_FALSE if there is nothing to return, [out] value is NULL
4334 [propget] HRESULT description
4336 [out, retval] BSTR *description
4339 /** @brief Returns the coordinates of the image.
4340 @param [in] coordinateType
4341 Specifies whether the returned coordinates should be relative to the screen or the parent object.
4342 @param [out] x
4343 @param [out] y
4344 @retval S_OK
4346 [propget] HRESULT imagePosition
4348 [in] enum IA2CoordinateType coordinateType,
4349 [out] long *x,
4350 [out, retval] long *y
4353 /** @brief Returns the size of the image in units specified by parent's coordinate system.
4354 @param [out] height
4355 @param [out] width
4356 @retval S_OK
4359 [propget] HRESULT imageSize
4361 [out] long *height,
4362 [out, retval] long *width
4365 /*************************************************************************
4367 * File Name (AccessibleEventID.idl)
4369 * IAccessible2 IDL Specification
4371 * Copyright (c) 2007, 2010 Linux Foundation
4372 * Copyright (c) 2006 IBM Corporation
4373 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
4374 * All rights reserved.
4377 * Redistribution and use in source and binary forms, with or without
4378 * modification, are permitted provided that the following conditions
4379 * are met:
4381 * 1. Redistributions of source code must retain the above copyright
4382 * notice, this list of conditions and the following disclaimer.
4384 * 2. Redistributions in binary form must reproduce the above
4385 * copyright notice, this list of conditions and the following
4386 * disclaimer in the documentation and/or other materials
4387 * provided with the distribution.
4389 * 3. Neither the name of the Linux Foundation nor the names of its
4390 * contributors may be used to endorse or promote products
4391 * derived from this software without specific prior written
4392 * permission.
4394 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
4395 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
4396 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4397 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
4398 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
4399 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4400 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
4401 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
4402 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4403 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
4404 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
4405 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
4406 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4408 * This BSD License conforms to the Open Source Initiative "Simplified
4409 * BSD License" as published at:
4410 * http://www.opensource.org/licenses/bsd-license.php
4412 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
4413 * mark may be used in accordance with the Linux Foundation Trademark
4414 * Policy to indicate compliance with the IAccessible2 specification.
4416 ************************************************************************/
4418 /** %IAccessible2 specific event constants
4420 This enum defines the event IDs fired by %IAccessible2 objects. The event IDs
4421 are in addition to those used by MSAA.
4423 enum IA2EventID {
4425 /** The change of the number or attributes of actions of an accessible
4426 object is signaled by events of this type.
4428 IA2_EVENT_ACTION_CHANGED = 0x101,
4430 /** The active descendant of a component has changed.
4432 Note: This event constant is misspelled and thus is deprecated and will be
4433 removed in a later version. Please use the correctly spelled version which
4434 follows.
4436 IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
4438 /** The active descendant of a component has changed. The active descendant
4439 is used in objects with transient children.
4441 Note: Due to the fact that MSAA's WinEvents don't allow the active child index
4442 to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event the manages
4443 descendants scheme can't be used. Instead the active child object has to fire
4444 MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be
4445 added to provide for event specific data to be passed with the event. At that
4446 time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and
4447 IA2_STATE_MANAGES_DESCENDANTS state would be useful.
4449 IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
4451 /** The document wide attributes of the document object have changed.
4453 IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED,
4455 /** The contents of the document have changed.
4457 IA2_EVENT_DOCUMENT_CONTENT_CHANGED,
4459 /** The loading of the document has completed.
4461 IA2_EVENT_DOCUMENT_LOAD_COMPLETE,
4463 /** The loading of the document was interrupted.
4465 IA2_EVENT_DOCUMENT_LOAD_STOPPED,
4467 /** The document contents are being reloaded.
4469 IA2_EVENT_DOCUMENT_RELOAD,
4471 /** The ending index of this link within the containing string has changed.
4473 IA2_EVENT_HYPERLINK_END_INDEX_CHANGED,
4475 /** The number of anchors associated with this hyperlink object has changed.
4477 IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED,
4479 /** The hyperlink selected state changed from selected to unselected or
4480 from unselected to selected.
4482 IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED,
4484 /** One of the links associated with the hypertext object has been activated.
4486 IA2_EVENT_HYPERTEXT_LINK_ACTIVATED,
4488 /** One of the links associated with the hypertext object has been selected.
4490 IA2_EVENT_HYPERTEXT_LINK_SELECTED,
4492 /** The starting index of this link within the containing string has changed.
4494 IA2_EVENT_HYPERLINK_START_INDEX_CHANGED,
4496 /** Focus has changed from one hypertext object to another, or focus moved
4497 from a non-hypertext object to a hypertext object, or focus moved from a
4498 hypertext object to a non-hypertext object.
4500 IA2_EVENT_HYPERTEXT_CHANGED,
4502 /** The number of hyperlinks associated with a hypertext object changed
4504 IA2_EVENT_HYPERTEXT_NLINKS_CHANGED,
4506 /** An object's attributes changed.
4507 Also see ::IA2_EVENT_TEXT_ATTRIBUTE_CHANGED.
4509 IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED,
4511 /** A slide changed in a presentation document or a page boundary was
4512 crossed in a word processing document.
4514 IA2_EVENT_PAGE_CHANGED,
4516 /** The caret moved from one section to the next.
4518 IA2_EVENT_SECTION_CHANGED,
4520 /** A table caption changed.
4522 IA2_EVENT_TABLE_CAPTION_CHANGED,
4524 /** A table's column description changed.
4526 IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED,
4528 /** A table's column header changed.
4530 IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED,
4532 /** A table's data changed.
4534 IA2_EVENT_TABLE_MODEL_CHANGED,
4536 /** A table's row description changed.
4538 IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED,
4540 /** A table's row header changed.
4542 IA2_EVENT_TABLE_ROW_HEADER_CHANGED,
4544 /** A table's summary changed.
4546 IA2_EVENT_TABLE_SUMMARY_CHANGED,
4548 /** A text object's attributes changed.
4549 Also see ::IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED.
4551 IA2_EVENT_TEXT_ATTRIBUTE_CHANGED,
4553 /** The caret has moved to a new position.
4555 IA2_EVENT_TEXT_CARET_MOVED,
4557 /** <b>Deprecated.</b> This event is equivalent to ::IA2_EVENT_TEXT_UPDATED.
4559 IA2_EVENT_TEXT_CHANGED,
4561 /** The caret moved from one column to the next.
4563 IA2_EVENT_TEXT_COLUMN_CHANGED,
4565 /** Text was inserted.
4567 IA2_EVENT_TEXT_INSERTED,
4569 /** Text was removed.
4571 IA2_EVENT_TEXT_REMOVED,
4573 /** This event indicates general text changes, i.e. changes to text that are
4574 exposed through the IAccessibleText interface. For compatibility with ATK/AT-SPI
4575 which does not have an equivalent event, servers can alternatively fire
4576 ::IA2_EVENT_TEXT_REMOVED and ::IA2_EVENT_TEXT_INSERTED.
4578 IA2_EVENT_TEXT_UPDATED,
4580 /** The text selection changed. Later versions of Microsoft development environments
4581 have an equivalent event identified, EVENT_OBJECT_TEXTSELECTIONCHANGED. Servers
4582 should use that if it is available and use IA2_EVENT_TEXT_SELECTION_CHANGED otherwise.
4583 Clients should be prepared to respond to either event.
4586 IA2_EVENT_TEXT_SELECTION_CHANGED,
4588 /** A visible data event indicates the change of the visual appearance
4589 of an accessible object. This includes for example most of the
4590 attributes available via the IAccessibleComponent interface.
4592 IA2_EVENT_VISIBLE_DATA_CHANGED
4595 /*************************************************************************
4597 * File Name (AccessibleApplication.idl)
4599 * IAccessible2 IDL Specification
4601 * Copyright (c) 2007, 2010 Linux Foundation
4602 * Copyright (c) 2006 IBM Corporation
4603 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
4604 * All rights reserved.
4607 * Redistribution and use in source and binary forms, with or without
4608 * modification, are permitted provided that the following conditions
4609 * are met:
4611 * 1. Redistributions of source code must retain the above copyright
4612 * notice, this list of conditions and the following disclaimer.
4614 * 2. Redistributions in binary form must reproduce the above
4615 * copyright notice, this list of conditions and the following
4616 * disclaimer in the documentation and/or other materials
4617 * provided with the distribution.
4619 * 3. Neither the name of the Linux Foundation nor the names of its
4620 * contributors may be used to endorse or promote products
4621 * derived from this software without specific prior written
4622 * permission.
4624 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
4625 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
4626 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4627 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
4628 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
4629 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4630 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
4631 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
4632 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4633 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
4634 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
4635 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
4636 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4638 * This BSD License conforms to the Open Source Initiative "Simplified
4639 * BSD License" as published at:
4640 * http://www.opensource.org/licenses/bsd-license.php
4642 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
4643 * mark may be used in accordance with the Linux Foundation Trademark
4644 * Policy to indicate compliance with the IAccessible2 specification.
4646 ************************************************************************/
4649 import "objidl.idl";
4650 import "oaidl.idl";
4651 import "oleacc.idl";
4653 /** @brief This interface gives access to the application's name and version information.
4655 This interface provides the AT with the information it needs to differentiate
4656 this application from other applications, from other versions of this
4657 application, or from other versions of this application running on different
4658 versions of an accessibility bridge or accessibility toolkit.
4660 Servers implementing IAccessible2 should provide access to the %IAccessibleApplication
4661 interface via QueryService from any object so that ATs can easily determine specific
4662 information about the application such as its name or version.
4664 [object, uuid(D49DED83-5B25-43F4-9B95-93B44595979E)]
4665 interface IAccessibleApplication : IUnknown
4668 /** @brief Returns the application name.
4669 @param [out] name
4670 @retval S_OK
4671 @retval S_FALSE if there is nothing to return, [out] value is NULL
4673 [propget] HRESULT appName
4675 [out, retval] BSTR *name
4678 /** @brief Returns the application version.
4679 @param [out] version
4680 @retval S_OK
4681 @retval S_FALSE if there is nothing to return, [out] value is NULL
4683 [propget] HRESULT appVersion
4685 [out, retval] BSTR *version
4688 /** @brief Returns the toolkit/bridge name.
4689 @param [out] name
4690 @retval S_OK
4691 @retval S_FALSE if there is nothing to return, [out] value is NULL
4693 [propget] HRESULT toolkitName
4695 [out, retval] BSTR *name
4698 /** @brief Returns the toolkit/bridge version.
4699 @param [out] version
4700 @retval S_OK
4701 @retval S_FALSE if there is nothing to return, [out] value is NULL
4703 [propget] HRESULT toolkitVersion
4705 [out, retval] BSTR *version
4710 /*************************************************************************
4712 * File Name (IA2TypeLibrary.idl)
4714 * IAccessible2 IDL Specification
4716 * Copyright (c) 2007, 2010 Linux Foundation
4717 * Copyright (c) 2006 IBM Corporation
4718 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
4719 * All rights reserved.
4722 * Redistribution and use in source and binary forms, with or without
4723 * modification, are permitted provided that the following conditions
4724 * are met:
4726 * 1. Redistributions of source code must retain the above copyright
4727 * notice, this list of conditions and the following disclaimer.
4729 * 2. Redistributions in binary form must reproduce the above
4730 * copyright notice, this list of conditions and the following
4731 * disclaimer in the documentation and/or other materials
4732 * provided with the distribution.
4734 * 3. Neither the name of the Linux Foundation nor the names of its
4735 * contributors may be used to endorse or promote products
4736 * derived from this software without specific prior written
4737 * permission.
4739 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
4740 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
4741 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4742 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
4743 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
4744 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4745 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
4746 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
4747 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4748 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
4749 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
4750 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
4751 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4753 * This BSD License conforms to the Open Source Initiative "Simplified
4754 * BSD License" as published at:
4755 * http://www.opensource.org/licenses/bsd-license.php
4757 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
4758 * mark may be used in accordance with the Linux Foundation Trademark
4759 * Policy to indicate compliance with the IAccessible2 specification.
4761 ************************************************************************/
4763 // This is not a standalone file. It is to be appended to the end of the
4764 // merged IDL file.
4766 cpp_quote("")
4767 cpp_quote("// Type Library Definitions")
4768 cpp_quote("")
4771 uuid(c974e070-3787-490a-87b0-e333b06ca1e2),
4772 helpstring("IAccessible2 Type Library"),
4773 version(1.2),
4774 hidden
4777 library IAccessible2Lib
4779 importlib ("stdole2.tlb");
4780 interface IAccessible2;
4781 interface IAccessibleAction;
4782 interface IAccessibleApplication;
4783 interface IAccessibleComponent;
4784 interface IAccessibleEditableText;
4785 interface IAccessibleHyperlink;
4786 interface IAccessibleHypertext;
4787 interface IAccessibleImage;
4788 interface IAccessibleRelation;
4789 interface IAccessibleTable;
4790 interface IAccessibleTable2;
4791 interface IAccessibleTableCell;
4792 interface IAccessibleText;
4793 interface IAccessibleValue;
4794 enum IA2CoordinateType;
4795 enum IA2EventID;
4796 enum IA2Role;
4797 enum IA2ScrollType;
4798 enum IA2States;
4799 enum IA2TableModelChangeType;
4800 enum IA2TextBoundaryType;
4801 enum IA2TextSpecialOffsets;