| /************************************************************************* |
| * |
| * File Name (AccessibleRelation.idl) |
| * |
| * IAccessible2 IDL Specification |
| * |
| * Copyright (c) 2007, 2013 Linux Foundation |
| * Copyright (c) 2006 IBM Corporation |
| * Copyright (c) 2000, 2006 Sun Microsystems, Inc. |
| * All rights reserved. |
| * |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * 2. Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following |
| * disclaimer in the documentation and/or other materials |
| * provided with the distribution. |
| * |
| * 3. Neither the name of the Linux Foundation nor the names of its |
| * contributors may be used to endorse or promote products |
| * derived from this software without specific prior written |
| * permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
| * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
| * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| * This BSD License conforms to the Open Source Initiative "Simplified |
| * BSD License" as published at: |
| * http://www.opensource.org/licenses/bsd-license.php |
| * |
| * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 |
| * mark may be used in accordance with the Linux Foundation Trademark |
| * Policy to indicate compliance with the IAccessible2 specification. |
| * |
| ************************************************************************/ |
| |
| midl_pragma warning(disable: 2111) |
| midl_pragma warning(disable: 2402) |
| |
| import "objidl.idl"; |
| import "oaidl.idl"; |
| import "oleacc.idl"; |
| |
| /** @defgroup grpRelations Relations |
| Use the following constants to compare against the BSTRs returned by |
| IAccessibleRelation::relationType. |
| */ |
| ///@{ |
| |
| /** The target object is the containing application object. */ |
| const WCHAR *const IA2_RELATION_CONTAINING_APPLICATION = L"containingApplication"; |
| |
| /** The target object is the containing document object. The target object implements |
| the IAccessibleDocument interface. |
| */ |
| const WCHAR *const IA2_RELATION_CONTAINING_DOCUMENT = L"containingDocument"; |
| |
| /** The target object is the containing tab pane object. */ |
| const WCHAR *const IA2_RELATION_CONTAINING_TAB_PANE = L"containingTabPane"; |
| |
| /** The target object is the containing window object. */ |
| const WCHAR *const IA2_RELATION_CONTAINING_WINDOW = L"containingWindow"; |
| |
| /** Some attribute of this object is affected by a target object. */ |
| const WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy"; |
| |
| /** This object is interactive and controls some attribute of a target object. */ |
| const WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor"; |
| |
| /** This object is described by the target object. */ |
| const WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy"; |
| |
| /** This object is describes the target object. */ |
| const WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor"; |
| |
| /** This object is embedded by a target object. */ |
| const WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy"; |
| |
| /** This object embeds a target object. This relation can be used on the |
| OBJID_CLIENT accessible for a top level window to show where the content |
| areas are. |
| */ |
| const WCHAR *const IA2_RELATION_EMBEDS = L"embeds"; |
| |
| /** Content flows to this object from a target object. |
| This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text |
| objects together in order to allow assistive technology to follow the |
| intended reading order. |
| */ |
| const WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom"; |
| |
| /** Content flows from this object to a target object. */ |
| const WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo"; |
| |
| /** This object is label for a target object. */ |
| const WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor"; |
| |
| /** This object is labelled by a target object. Note that the double L spelling |
| which follows is preferred. Please use it instead. This single L version may |
| be removed in a later version. |
| */ |
| const WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy"; |
| |
| /** This object is labelled by a target object. */ |
| const WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy"; |
| |
| /** This object is a member of a group of one or more objects. When |
| there is more than one object in the group each member may have one and the |
| same target, e.g. a grouping object. It is also possible that each member has |
| multiple additional targets, e.g. one for every other member in the group. |
| */ |
| const WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf"; |
| |
| /** The target object is the next object in the tab order. */ |
| const WCHAR *const IA2_RELATION_NEXT_TABBABLE = L"nextTabbable"; |
| |
| /** This object is a logical child of a target object. This relation is the reciprocal |
| of the IA2_RELATION_NODE_PARENT_OF relation. In some cases an application's accessible |
| tree is such that objects can be in a logical parent-child relationship which is |
| different from the hierarchy of the accessible tree. */ |
| const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf"; |
| |
| /** This object is a logical parent of a target object. This relation is the reciprocal |
| of the IA2_RELATION_NODE_CHILD_OF relation. In some cases an application's accessible |
| tree is such that objects can be in a logical parent-child relationship which is |
| different from the hierarchy of the accessible tree. */ |
| const WCHAR *const IA2_RELATION_NODE_PARENT_OF = L"nodeParentOf"; |
| |
| /** This object is a parent window of the target object. */ |
| const WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf"; |
| |
| /** This object is a transient component related to the target object. |
| When this object is activated the target object doesn't lose focus. |
| */ |
| const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor"; |
| |
| /** The target object is the previous object in the tab order. */ |
| const WCHAR *const IA2_RELATION_PREVIOUS_TABBABLE = L"previousTabbable"; |
| |
| /** This object is a sub window of a target object. */ |
| const WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf"; |
| |
| ///@} |
| |
| /** This interface gives access to an object's set of relations. |
| */ |
| [object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)] |
| interface IAccessibleRelation : IUnknown |
| { |
| /** @brief Returns the type of the relation. |
| @param [out] relationType |
| The strings returned are defined @ref grpRelations "in this section of the documentation". |
| @retval S_OK |
| */ |
| [propget] HRESULT relationType |
| ( |
| [out, retval] BSTR *relationType |
| ); |
| |
| /** @brief Returns a localized version of the relation type. |
| @param [out] localizedRelationType |
| @retval S_OK |
| */ |
| [propget] HRESULT localizedRelationType |
| ( |
| [out, retval] BSTR *localizedRelationType |
| ); |
| |
| /** @brief Returns the number of targets for this relation. |
| @param [out] nTargets |
| @retval S_OK |
| */ |
| [propget] HRESULT nTargets |
| ( |
| [out, retval] long *nTargets |
| ); |
| |
| /** @brief Returns one accessible relation target. |
| @param [in] targetIndex |
| 0 based index |
| @param [out] target |
| @retval S_OK |
| @retval E_INVALIDARG if bad [in] passed |
| @note Use QueryInterface to get IAccessible2. |
| */ |
| [propget] HRESULT target |
| ( |
| [in] long targetIndex, |
| [out, retval] IUnknown **target |
| ); |
| |
| /** @brief Returns multiple accessible relation targets |
| @param [in] maxTargets |
| maximum size of the array allocated by the client |
| @param [out] targets |
| The array of target objects. Note that this array is to be allocated by the |
| client and freed when no longer needed. Refer to @ref _arrayConsideration |
| "Special Consideration when using Arrays" for more details. You will need to use |
| QueryInterface on the IUnknown to get the IAccessible2. |
| @param [out] nTargets |
| actual number of targets in the returned array (not more than maxTargets) |
| @retval S_OK |
| @retval E_INVALIDARG if bad [in] passed, e.g. a negative value |
| */ |
| [propget] HRESULT targets |
| ( |
| [in] long maxTargets, |
| [out, size_is(maxTargets), length_is(*nTargets)] |
| IUnknown **targets, |
| [out, retval] long *nTargets |
| ); |
| |
| } |