/************************************************************************* * * 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. * ************************************************************************/ 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 ); }