DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
/*************************************************************************
 *
 *  File Name (AccessibleRelation.idl)
 *
 *  IAccessible2 IDL Specification
 *
 *  Copyright (c) Linux Foundation 2007, 2009
 *  Copyright (c) IBM Corp. 2006
 *  Copyright (c) Sun Microsystems, Inc. 2000, 2006
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License version 2.1, as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 ************************************************************************/

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.
*/ 
///@{

/** 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";

/** This object is a child of a target object. */
const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf";

/** 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 loose focus.
*/
const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor";

/** 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 S_FALSE if there is nothing to return, [out] value is NULL
   @retval E_INVALIDARG if bad [in] passed, [out] value is NULL 
   @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 S_FALSE if there is nothing to return, nTargets is set to 0
  */
  [propget] HRESULT targets
    (
     [in] long maxTargets, 
     [out, size_is(maxTargets), length_is(*nTargets)]
       IUnknown **targets, 
     [out, retval] long *nTargets 
    );

}