blob: 7903030345ee8619f56c05fff5c4a403e9b5e8ca [file] [log] [blame]
/*************************************************************************
*
* 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
);
}