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