1*bcb85aadSSteve Yin/************************************************************************* 2*bcb85aadSSteve Yin * 3*bcb85aadSSteve Yin * File Name (api_all_headers.idl) 4*bcb85aadSSteve Yin * 5*bcb85aadSSteve Yin * IAccessible2 IDL Specification 6*bcb85aadSSteve Yin * 7*bcb85aadSSteve Yin * Copyright (c) 2013 Linux Foundation 8*bcb85aadSSteve Yin * All rights reserved. 9*bcb85aadSSteve Yin * 10*bcb85aadSSteve Yin * 11*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 12*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 13*bcb85aadSSteve Yin * are met: 14*bcb85aadSSteve Yin * 15*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 16*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 17*bcb85aadSSteve Yin * 18*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 19*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 20*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 21*bcb85aadSSteve Yin * provided with the distribution. 22*bcb85aadSSteve Yin * 23*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 24*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 25*bcb85aadSSteve Yin * derived from this software without specific prior written 26*bcb85aadSSteve Yin * permission. 27*bcb85aadSSteve Yin * 28*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 29*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 30*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 31*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 32*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 33*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 34*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 35*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 36*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 37*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 38*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 39*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 40*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 41*bcb85aadSSteve Yin * 42*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 43*bcb85aadSSteve Yin * BSD License" as published at: 44*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 45*bcb85aadSSteve Yin * 46*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 47*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 48*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 49*bcb85aadSSteve Yin * 50*bcb85aadSSteve Yin ************************************************************************/ 51*bcb85aadSSteve Yin 52*bcb85aadSSteve Yinimport "objidl.idl"; 53*bcb85aadSSteve Yinimport "oaidl.idl"; 54*bcb85aadSSteve Yinimport "oleacc.idl"; 55*bcb85aadSSteve Yin 56*bcb85aadSSteve Yin/************************************************************************* 57*bcb85aadSSteve Yin * 58*bcb85aadSSteve Yin * File Name (IA2CommonTypes.idl) 59*bcb85aadSSteve Yin * 60*bcb85aadSSteve Yin * IAccessible2 IDL Specification 61*bcb85aadSSteve Yin * 62*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 63*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 64*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 65*bcb85aadSSteve Yin * All rights reserved. 66*bcb85aadSSteve Yin * 67*bcb85aadSSteve Yin * 68*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 69*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 70*bcb85aadSSteve Yin * are met: 71*bcb85aadSSteve Yin * 72*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 73*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 74*bcb85aadSSteve Yin * 75*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 76*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 77*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 78*bcb85aadSSteve Yin * provided with the distribution. 79*bcb85aadSSteve Yin * 80*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 81*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 82*bcb85aadSSteve Yin * derived from this software without specific prior written 83*bcb85aadSSteve Yin * permission. 84*bcb85aadSSteve Yin * 85*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 86*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 87*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 88*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 89*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 90*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 91*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 92*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 93*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 94*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 95*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 96*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 97*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 98*bcb85aadSSteve Yin * 99*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 100*bcb85aadSSteve Yin * BSD License" as published at: 101*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 102*bcb85aadSSteve Yin * 103*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 104*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 105*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 106*bcb85aadSSteve Yin * 107*bcb85aadSSteve Yin ************************************************************************/ 108*bcb85aadSSteve Yin 109*bcb85aadSSteve Yin /** These constants control the scrolling of an object or substring into a window. 110*bcb85aadSSteve Yin 111*bcb85aadSSteve Yin This enum is used in IAccessible2::scrollTo and IAccessibleText::scrollSubstringTo. 112*bcb85aadSSteve Yin*/ 113*bcb85aadSSteve Yinenum IA2ScrollType { 114*bcb85aadSSteve Yin 115*bcb85aadSSteve Yin /** Scroll the top left corner of the object or substring such that the top left 116*bcb85aadSSteve Yin corner (and as much as possible of the rest of the object or substring) is within 117*bcb85aadSSteve Yin the top level window. In cases where the entire object or substring fits within 118*bcb85aadSSteve Yin the top level window, the placement of the object or substring is dependent on 119*bcb85aadSSteve Yin the application. For example, the object or substring may be scrolled to the 120*bcb85aadSSteve Yin closest edge, the furthest edge, or midway between those two edges. In cases 121*bcb85aadSSteve Yin where there is a hierarchy of nested scrollable controls, more than one control 122*bcb85aadSSteve Yin may have to be scrolled. 123*bcb85aadSSteve Yin */ 124*bcb85aadSSteve Yin IA2_SCROLL_TYPE_TOP_LEFT, 125*bcb85aadSSteve Yin 126*bcb85aadSSteve Yin /** Scroll the bottom right corner of the object or substring such that the bottom right 127*bcb85aadSSteve Yin corner (and as much as possible of the rest of the object or substring) is within 128*bcb85aadSSteve Yin the top level window. In cases where the entire object or substring fits within 129*bcb85aadSSteve Yin the top level window, the placement of the object or substring is dependent on 130*bcb85aadSSteve Yin the application. For example, the object or substring may be scrolled to the 131*bcb85aadSSteve Yin closest edge, the furthest edge, or midway between those two edges. In cases 132*bcb85aadSSteve Yin where there is a hierarchy of nested scrollable controls, more than one control 133*bcb85aadSSteve Yin may have to be scrolled. 134*bcb85aadSSteve Yin */ 135*bcb85aadSSteve Yin IA2_SCROLL_TYPE_BOTTOM_RIGHT, 136*bcb85aadSSteve Yin 137*bcb85aadSSteve Yin /** Scroll the top edge of the object or substring such that the top edge 138*bcb85aadSSteve Yin (and as much as possible of the rest of the object or substring) is within the 139*bcb85aadSSteve Yin top level window. In cases where the entire object or substring fits within 140*bcb85aadSSteve Yin the top level window, the placement of the object or substring is dependent on 141*bcb85aadSSteve Yin the application. For example, the object or substring may be scrolled to the 142*bcb85aadSSteve Yin closest edge, the furthest edge, or midway between those two edges. In cases 143*bcb85aadSSteve Yin where there is a hierarchy of nested scrollable controls, more than one control 144*bcb85aadSSteve Yin may have to be scrolled. 145*bcb85aadSSteve Yin */ 146*bcb85aadSSteve Yin IA2_SCROLL_TYPE_TOP_EDGE, 147*bcb85aadSSteve Yin 148*bcb85aadSSteve Yin /** Scroll the bottom edge of the object or substring such that the bottom edge 149*bcb85aadSSteve Yin (and as much as possible of the rest of the object or substring) is within the 150*bcb85aadSSteve Yin top level window. In cases where the entire object or substring fits within 151*bcb85aadSSteve Yin the top level window, the placement of the object or substring is dependent on 152*bcb85aadSSteve Yin the application. For example, the object or substring may be scrolled to the 153*bcb85aadSSteve Yin closest edge, the furthest edge, or midway between those two edges. In cases 154*bcb85aadSSteve Yin where there is a hierarchy of nested scrollable controls, more than one control 155*bcb85aadSSteve Yin may have to be scrolled. 156*bcb85aadSSteve Yin */ 157*bcb85aadSSteve Yin IA2_SCROLL_TYPE_BOTTOM_EDGE, 158*bcb85aadSSteve Yin 159*bcb85aadSSteve Yin /** Scroll the left edge of the object or substring such that the left edge 160*bcb85aadSSteve Yin (and as much as possible of the rest of the object or substring) is within the 161*bcb85aadSSteve Yin top level window. In cases where the entire object or substring fits within 162*bcb85aadSSteve Yin the top level window, the placement of the object or substring is dependent on 163*bcb85aadSSteve Yin the application. For example, the object or substring may be scrolled to the 164*bcb85aadSSteve Yin closest edge, the furthest edge, or midway between those two edges. In cases 165*bcb85aadSSteve Yin where there is a hierarchy of nested scrollable controls, more than one control 166*bcb85aadSSteve Yin may have to be scrolled. 167*bcb85aadSSteve Yin */ 168*bcb85aadSSteve Yin IA2_SCROLL_TYPE_LEFT_EDGE, 169*bcb85aadSSteve Yin 170*bcb85aadSSteve Yin /** Scroll the right edge of the object or substring such that the right edge 171*bcb85aadSSteve Yin (and as much as possible of the rest of the object or substring) is within the 172*bcb85aadSSteve Yin top level window. In cases where the entire object or substring fits within 173*bcb85aadSSteve Yin the top level window, the placement of the object or substring is dependent on 174*bcb85aadSSteve Yin the application. For example, the object or substring may be scrolled to the 175*bcb85aadSSteve Yin closest edge, the furthest edge, or midway between those two edges. In cases 176*bcb85aadSSteve Yin where there is a hierarchy of nested scrollable controls, more than one control 177*bcb85aadSSteve Yin may have to be scrolled. 178*bcb85aadSSteve Yin */ 179*bcb85aadSSteve Yin IA2_SCROLL_TYPE_RIGHT_EDGE, 180*bcb85aadSSteve Yin 181*bcb85aadSSteve Yin /** Scroll the object or substring such that as much as possible of the 182*bcb85aadSSteve Yin object or substring is within the top level window. The placement of 183*bcb85aadSSteve Yin the object is dependent on the application. For example, the object or 184*bcb85aadSSteve Yin substring may be scrolled to to closest edge, the furthest edge, or midway 185*bcb85aadSSteve Yin between those two edges. 186*bcb85aadSSteve Yin */ 187*bcb85aadSSteve Yin IA2_SCROLL_TYPE_ANYWHERE 188*bcb85aadSSteve Yin}; 189*bcb85aadSSteve Yin 190*bcb85aadSSteve Yin/** These constants define which coordinate system a point is located in. 191*bcb85aadSSteve Yin 192*bcb85aadSSteve Yin This enum is used in IAccessible2::scrollToPoint, IAccessibleImage::imagePosition, 193*bcb85aadSSteve Yin IAccessibleText::characterExtents, and IAccessibleText::offsetAtPoint, and 194*bcb85aadSSteve Yin IAccessibleText::scrollSubstringToPoint. 195*bcb85aadSSteve Yin*/ 196*bcb85aadSSteve Yinenum IA2CoordinateType { 197*bcb85aadSSteve Yin 198*bcb85aadSSteve Yin /// The coordinates are relative to the screen. 199*bcb85aadSSteve Yin IA2_COORDTYPE_SCREEN_RELATIVE, 200*bcb85aadSSteve Yin 201*bcb85aadSSteve Yin /** The coordinates are relative to the upper left corner of the bounding box 202*bcb85aadSSteve Yin of the immediate parent. 203*bcb85aadSSteve Yin */ 204*bcb85aadSSteve Yin IA2_COORDTYPE_PARENT_RELATIVE 205*bcb85aadSSteve Yin 206*bcb85aadSSteve Yin}; 207*bcb85aadSSteve Yin 208*bcb85aadSSteve Yin/** Special offsets for use in IAccessibleText and IAccessibleEditableText methods 209*bcb85aadSSteve Yin 210*bcb85aadSSteve Yin Refer to @ref _specialOffsets 211*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 212*bcb85aadSSteve Yin for more information. 213*bcb85aadSSteve Yin*/ 214*bcb85aadSSteve Yinenum IA2TextSpecialOffsets { 215*bcb85aadSSteve Yin IA2_TEXT_OFFSET_LENGTH = -1, /**< This offset is equivalent to the length of the string. It eliminates 216*bcb85aadSSteve Yin the need to call IAccessibleText::nCharacters. */ 217*bcb85aadSSteve Yin IA2_TEXT_OFFSET_CARET = -2 /**< This offset signifies that the text related to the physical location 218*bcb85aadSSteve Yin of the caret should be used. */ 219*bcb85aadSSteve Yin}; 220*bcb85aadSSteve Yin 221*bcb85aadSSteve Yin/** These constants specify the kind of change made to a table. 222*bcb85aadSSteve Yin 223*bcb85aadSSteve Yin This enum is used in the IA2TableModelChange struct which in turn is used by 224*bcb85aadSSteve Yin IAccessibleTable::modelChange and IAccessibleTable2::modelChange. 225*bcb85aadSSteve Yin*/ 226*bcb85aadSSteve Yinenum IA2TableModelChangeType { 227*bcb85aadSSteve Yin IA2_TABLE_MODEL_CHANGE_INSERT, // = 0; 228*bcb85aadSSteve Yin IA2_TABLE_MODEL_CHANGE_DELETE, 229*bcb85aadSSteve Yin IA2_TABLE_MODEL_CHANGE_UPDATE 230*bcb85aadSSteve Yin}; 231*bcb85aadSSteve Yin 232*bcb85aadSSteve Yin/** A structure defining the type of and extents of changes made to a table 233*bcb85aadSSteve Yin 234*bcb85aadSSteve Yin IAccessibleTable::modelChange and IAccessibleTable2::modelChange return this struct. 235*bcb85aadSSteve Yin In the case of an insertion or change the row and column offsets define the boundaries 236*bcb85aadSSteve Yin of the inserted or changed subtable after the operation. In the case of a deletion 237*bcb85aadSSteve Yin the row and column offsets define the boundaries of the subtable being removed before 238*bcb85aadSSteve Yin the removal. 239*bcb85aadSSteve Yin*/ 240*bcb85aadSSteve Yintypedef struct IA2TableModelChange { 241*bcb85aadSSteve Yin enum IA2TableModelChangeType type; // insert, delete, update 242*bcb85aadSSteve Yin long firstRow; ///< 0 based, inclusive 243*bcb85aadSSteve Yin long lastRow; ///< 0 based, inclusive 244*bcb85aadSSteve Yin long firstColumn; ///< 0 based, inclusive 245*bcb85aadSSteve Yin long lastColumn; ///< 0 based, inclusive 246*bcb85aadSSteve Yin} IA2TableModelChange; 247*bcb85aadSSteve Yin/************************************************************************* 248*bcb85aadSSteve Yin * 249*bcb85aadSSteve Yin * File Name (AccessibleRelation.idl) 250*bcb85aadSSteve Yin * 251*bcb85aadSSteve Yin * IAccessible2 IDL Specification 252*bcb85aadSSteve Yin * 253*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 254*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 255*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 256*bcb85aadSSteve Yin * All rights reserved. 257*bcb85aadSSteve Yin * 258*bcb85aadSSteve Yin * 259*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 260*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 261*bcb85aadSSteve Yin * are met: 262*bcb85aadSSteve Yin * 263*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 264*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 265*bcb85aadSSteve Yin * 266*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 267*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 268*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 269*bcb85aadSSteve Yin * provided with the distribution. 270*bcb85aadSSteve Yin * 271*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 272*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 273*bcb85aadSSteve Yin * derived from this software without specific prior written 274*bcb85aadSSteve Yin * permission. 275*bcb85aadSSteve Yin * 276*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 277*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 278*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 279*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 280*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 281*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 282*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 283*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 284*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 285*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 286*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 287*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 288*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 289*bcb85aadSSteve Yin * 290*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 291*bcb85aadSSteve Yin * BSD License" as published at: 292*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 293*bcb85aadSSteve Yin * 294*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 295*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 296*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 297*bcb85aadSSteve Yin * 298*bcb85aadSSteve Yin ************************************************************************/ 299*bcb85aadSSteve Yin 300*bcb85aadSSteve Yin 301*bcb85aadSSteve Yin 302*bcb85aadSSteve Yin 303*bcb85aadSSteve Yin 304*bcb85aadSSteve Yin/** @defgroup grpRelations Relations 305*bcb85aadSSteve Yin Use the following constants to compare against the BSTRs returned by 306*bcb85aadSSteve Yin IAccessibleRelation::relationType. 307*bcb85aadSSteve Yin*/ 308*bcb85aadSSteve Yin///@{ 309*bcb85aadSSteve Yin 310*bcb85aadSSteve Yin/** The target object is the containing application object. */ 311*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_CONTAINING_APPLICATION = L"containingApplication"; 312*bcb85aadSSteve Yin 313*bcb85aadSSteve Yin/** The target object is the containing document object. The target object implements 314*bcb85aadSSteve Yin the IAccessibleDocument interface. 315*bcb85aadSSteve Yin*/ 316*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_CONTAINING_DOCUMENT = L"containingDocument"; 317*bcb85aadSSteve Yin 318*bcb85aadSSteve Yin/** The target object is the containing tab pane object. */ 319*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_CONTAINING_TAB_PANE = L"containingTabPane"; 320*bcb85aadSSteve Yin 321*bcb85aadSSteve Yin/** The target object is the containing window object. */ 322*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_CONTAINING_WINDOW = L"containingWindow"; 323*bcb85aadSSteve Yin 324*bcb85aadSSteve Yin/** Some attribute of this object is affected by a target object. */ 325*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy"; 326*bcb85aadSSteve Yin 327*bcb85aadSSteve Yin/** This object is interactive and controls some attribute of a target object. */ 328*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor"; 329*bcb85aadSSteve Yin 330*bcb85aadSSteve Yin/** This object is described by the target object. */ 331*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy"; 332*bcb85aadSSteve Yin 333*bcb85aadSSteve Yin/** This object is describes the target object. */ 334*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor"; 335*bcb85aadSSteve Yin 336*bcb85aadSSteve Yin/** This object is embedded by a target object. */ 337*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy"; 338*bcb85aadSSteve Yin 339*bcb85aadSSteve Yin/** This object embeds a target object. This relation can be used on the 340*bcb85aadSSteve Yin OBJID_CLIENT accessible for a top level window to show where the content 341*bcb85aadSSteve Yin areas are. 342*bcb85aadSSteve Yin*/ 343*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_EMBEDS = L"embeds"; 344*bcb85aadSSteve Yin 345*bcb85aadSSteve Yin/** Content flows to this object from a target object. 346*bcb85aadSSteve Yin This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text 347*bcb85aadSSteve Yin objects together in order to allow assistive technology to follow the 348*bcb85aadSSteve Yin intended reading order. 349*bcb85aadSSteve Yin*/ 350*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom"; 351*bcb85aadSSteve Yin 352*bcb85aadSSteve Yin/** Content flows from this object to a target object. */ 353*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo"; 354*bcb85aadSSteve Yin 355*bcb85aadSSteve Yin/** This object is label for a target object. */ 356*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor"; 357*bcb85aadSSteve Yin 358*bcb85aadSSteve Yin/** This object is labelled by a target object. Note that the double L spelling 359*bcb85aadSSteve Yin which follows is preferred. Please use it instead. This single L version may 360*bcb85aadSSteve Yin be removed in a later version. 361*bcb85aadSSteve Yin*/ 362*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy"; 363*bcb85aadSSteve Yin 364*bcb85aadSSteve Yin/** This object is labelled by a target object. */ 365*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy"; 366*bcb85aadSSteve Yin 367*bcb85aadSSteve Yin/** This object is a member of a group of one or more objects. When 368*bcb85aadSSteve Yin there is more than one object in the group each member may have one and the 369*bcb85aadSSteve Yin same target, e.g. a grouping object. It is also possible that each member has 370*bcb85aadSSteve Yin multiple additional targets, e.g. one for every other member in the group. 371*bcb85aadSSteve Yin*/ 372*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf"; 373*bcb85aadSSteve Yin 374*bcb85aadSSteve Yin/** The target object is the next object in the tab order. */ 375*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_NEXT_TABBABLE = L"nextTabbable"; 376*bcb85aadSSteve Yin 377*bcb85aadSSteve Yin/** This object is a logical child of a target object. This relation is the reciprocal 378*bcb85aadSSteve Yin of the IA2_RELATION_NODE_PARENT_OF relation. In some cases an application's accessible 379*bcb85aadSSteve Yin tree is such that objects can be in a logical parent-child relationship which is 380*bcb85aadSSteve Yin different from the hierarchy of the accessible tree. */ 381*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf"; 382*bcb85aadSSteve Yin 383*bcb85aadSSteve Yin/** This object is a logical parent of a target object. This relation is the reciprocal 384*bcb85aadSSteve Yin of the IA2_RELATION_NODE_CHILD_OF relation. In some cases an application's accessible 385*bcb85aadSSteve Yin tree is such that objects can be in a logical parent-child relationship which is 386*bcb85aadSSteve Yin different from the hierarchy of the accessible tree. */ 387*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_NODE_PARENT_OF = L"nodeParentOf"; 388*bcb85aadSSteve Yin 389*bcb85aadSSteve Yin/** This object is a parent window of the target object. */ 390*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf"; 391*bcb85aadSSteve Yin 392*bcb85aadSSteve Yin/** This object is a transient component related to the target object. 393*bcb85aadSSteve Yin When this object is activated the target object doesn't lose focus. 394*bcb85aadSSteve Yin*/ 395*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor"; 396*bcb85aadSSteve Yin 397*bcb85aadSSteve Yin/** The target object is the previous object in the tab order. */ 398*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_PREVIOUS_TABBABLE = L"previousTabbable"; 399*bcb85aadSSteve Yin 400*bcb85aadSSteve Yin/** This object is a sub window of a target object. */ 401*bcb85aadSSteve Yinconst WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf"; 402*bcb85aadSSteve Yin 403*bcb85aadSSteve Yin///@} 404*bcb85aadSSteve Yin 405*bcb85aadSSteve Yin/** This interface gives access to an object's set of relations. 406*bcb85aadSSteve Yin*/ 407*bcb85aadSSteve Yin[object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)] 408*bcb85aadSSteve Yininterface IAccessibleRelation : IUnknown 409*bcb85aadSSteve Yin{ 410*bcb85aadSSteve Yin /** @brief Returns the type of the relation. 411*bcb85aadSSteve Yin @param [out] relationType 412*bcb85aadSSteve Yin The strings returned are defined @ref grpRelations "in this section of the documentation". 413*bcb85aadSSteve Yin @retval S_OK 414*bcb85aadSSteve Yin */ 415*bcb85aadSSteve Yin [propget] HRESULT relationType 416*bcb85aadSSteve Yin ( 417*bcb85aadSSteve Yin [out, retval] BSTR *relationType 418*bcb85aadSSteve Yin ); 419*bcb85aadSSteve Yin 420*bcb85aadSSteve Yin /** @brief Returns a localized version of the relation type. 421*bcb85aadSSteve Yin @param [out] localizedRelationType 422*bcb85aadSSteve Yin @retval S_OK 423*bcb85aadSSteve Yin */ 424*bcb85aadSSteve Yin [propget] HRESULT localizedRelationType 425*bcb85aadSSteve Yin ( 426*bcb85aadSSteve Yin [out, retval] BSTR *localizedRelationType 427*bcb85aadSSteve Yin ); 428*bcb85aadSSteve Yin 429*bcb85aadSSteve Yin /** @brief Returns the number of targets for this relation. 430*bcb85aadSSteve Yin @param [out] nTargets 431*bcb85aadSSteve Yin @retval S_OK 432*bcb85aadSSteve Yin */ 433*bcb85aadSSteve Yin [propget] HRESULT nTargets 434*bcb85aadSSteve Yin ( 435*bcb85aadSSteve Yin [out, retval] long *nTargets 436*bcb85aadSSteve Yin ); 437*bcb85aadSSteve Yin 438*bcb85aadSSteve Yin /** @brief Returns one accessible relation target. 439*bcb85aadSSteve Yin @param [in] targetIndex 440*bcb85aadSSteve Yin 0 based index 441*bcb85aadSSteve Yin @param [out] target 442*bcb85aadSSteve Yin @retval S_OK 443*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 444*bcb85aadSSteve Yin @note Use QueryInterface to get IAccessible2. 445*bcb85aadSSteve Yin */ 446*bcb85aadSSteve Yin [propget] HRESULT target 447*bcb85aadSSteve Yin ( 448*bcb85aadSSteve Yin [in] long targetIndex, 449*bcb85aadSSteve Yin [out, retval] IUnknown **target 450*bcb85aadSSteve Yin ); 451*bcb85aadSSteve Yin 452*bcb85aadSSteve Yin /** @brief Returns multiple accessible relation targets 453*bcb85aadSSteve Yin @param [in] maxTargets 454*bcb85aadSSteve Yin maximum size of the array allocated by the client 455*bcb85aadSSteve Yin @param [out] targets 456*bcb85aadSSteve Yin The array of target objects. Note that this array is to be allocated by the 457*bcb85aadSSteve Yin client and freed when no longer needed. Refer to @ref _arrayConsideration 458*bcb85aadSSteve Yin "Special Consideration when using Arrays" for more details. You will need to use 459*bcb85aadSSteve Yin QueryInterface on the IUnknown to get the IAccessible2. 460*bcb85aadSSteve Yin @param [out] nTargets 461*bcb85aadSSteve Yin actual number of targets in the returned array (not more than maxTargets) 462*bcb85aadSSteve Yin @retval S_OK 463*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, e.g. a negative value 464*bcb85aadSSteve Yin */ 465*bcb85aadSSteve Yin [propget] HRESULT targets 466*bcb85aadSSteve Yin ( 467*bcb85aadSSteve Yin [in] long maxTargets, 468*bcb85aadSSteve Yin [out, size_is(maxTargets), length_is(*nTargets)] 469*bcb85aadSSteve Yin IUnknown **targets, 470*bcb85aadSSteve Yin [out, retval] long *nTargets 471*bcb85aadSSteve Yin ); 472*bcb85aadSSteve Yin 473*bcb85aadSSteve Yin} 474*bcb85aadSSteve Yin/************************************************************************* 475*bcb85aadSSteve Yin * 476*bcb85aadSSteve Yin * File Name (AccessibleAction.idl) 477*bcb85aadSSteve Yin * 478*bcb85aadSSteve Yin * IAccessible2 IDL Specification 479*bcb85aadSSteve Yin * 480*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 481*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 482*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 483*bcb85aadSSteve Yin * All rights reserved. 484*bcb85aadSSteve Yin * 485*bcb85aadSSteve Yin * 486*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 487*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 488*bcb85aadSSteve Yin * are met: 489*bcb85aadSSteve Yin * 490*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 491*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 492*bcb85aadSSteve Yin * 493*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 494*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 495*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 496*bcb85aadSSteve Yin * provided with the distribution. 497*bcb85aadSSteve Yin * 498*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 499*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 500*bcb85aadSSteve Yin * derived from this software without specific prior written 501*bcb85aadSSteve Yin * permission. 502*bcb85aadSSteve Yin * 503*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 504*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 505*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 506*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 507*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 508*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 509*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 510*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 511*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 512*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 513*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 514*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 515*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 516*bcb85aadSSteve Yin * 517*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 518*bcb85aadSSteve Yin * BSD License" as published at: 519*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 520*bcb85aadSSteve Yin * 521*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 522*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 523*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 524*bcb85aadSSteve Yin * 525*bcb85aadSSteve Yin ************************************************************************/ 526*bcb85aadSSteve Yin 527*bcb85aadSSteve Yin 528*bcb85aadSSteve Yin 529*bcb85aadSSteve Yin 530*bcb85aadSSteve Yin 531*bcb85aadSSteve Yin/** This enum defines values which are predefined actions for use when implementing 532*bcb85aadSSteve Yin support for media. 533*bcb85aadSSteve Yin 534*bcb85aadSSteve Yin This enum is used when specifying an action for IAccessibleAction::doAction. 535*bcb85aadSSteve Yin*/ 536*bcb85aadSSteve Yin 537*bcb85aadSSteve Yinenum IA2Actions { 538*bcb85aadSSteve Yin IA2_ACTION_OPEN = -1, /**< Used to inform the server that the client will 539*bcb85aadSSteve Yin signal via IA2_ACTION_COMPLETE when it has consumed 540*bcb85aadSSteve Yin the content provided by the object. This action 541*bcb85aadSSteve Yin allows the object's server to wait for all clients 542*bcb85aadSSteve Yin to signal their readiness for additional content. 543*bcb85aadSSteve Yin Any form of content generation that requires 544*bcb85aadSSteve Yin synchronization with an AT would require use of this 545*bcb85aadSSteve Yin action. One example is the generation of text describing 546*bcb85aadSSteve Yin visual content not obvious from a video's sound track. 547*bcb85aadSSteve Yin In this scenario the Text to Speech or Braille output 548*bcb85aadSSteve Yin may take more time than the related length of silence 549*bcb85aadSSteve Yin in the video's sound track. */ 550*bcb85aadSSteve Yin IA2_ACTION_COMPLETE = -2, /**< Used by the client to inform the server that it has 551*bcb85aadSSteve Yin consumed the most recent content provided by this object. */ 552*bcb85aadSSteve Yin IA2_ACTION_CLOSE = -3 /**< Used to inform the server that the client no longer 553*bcb85aadSSteve Yin requires synchronization. */ 554*bcb85aadSSteve Yin}; 555*bcb85aadSSteve Yin 556*bcb85aadSSteve Yin/** @brief This interface gives access to actions that can be executed 557*bcb85aadSSteve Yin for accessible objects. 558*bcb85aadSSteve Yin 559*bcb85aadSSteve Yin Every accessible object that can be manipulated via the native GUI beyond the 560*bcb85aadSSteve Yin methods available either in the MSAA IAccessible interface or in the set of 561*bcb85aadSSteve Yin IAccessible2 interfaces (other than this IAccessibleAction interface) should 562*bcb85aadSSteve Yin support the IAccessibleAction interface in order to provide Assistive Technology 563*bcb85aadSSteve Yin access to all the actions that can be performed by the object. Each action can 564*bcb85aadSSteve Yin be performed or queried for a name, description or associated key bindings. 565*bcb85aadSSteve Yin Actions are needed more for ATs that assist the mobility impaired, such as 566*bcb85aadSSteve Yin on-screen keyboards and voice command software. By providing actions directly, 567*bcb85aadSSteve Yin the AT can present them to the user without the user having to perform the extra 568*bcb85aadSSteve Yin steps to navigate a context menu. 569*bcb85aadSSteve Yin 570*bcb85aadSSteve Yin The first action should be equivalent to the MSAA default action. If there is 571*bcb85aadSSteve Yin only one action, %IAccessibleAction should also be implemented. 572*bcb85aadSSteve Yin*/ 573*bcb85aadSSteve Yin[object, uuid(B70D9F59-3B5A-4dba-AB9E-22012F607DF5)] 574*bcb85aadSSteve Yininterface IAccessibleAction : IUnknown 575*bcb85aadSSteve Yin{ 576*bcb85aadSSteve Yin 577*bcb85aadSSteve Yin /** @brief Returns the number of accessible actions available in this object. 578*bcb85aadSSteve Yin 579*bcb85aadSSteve Yin If there are more than one, the first one is considered the 580*bcb85aadSSteve Yin "default" action of the object. 581*bcb85aadSSteve Yin @param [out] nActions 582*bcb85aadSSteve Yin The returned value of the number of actions is zero if there are 583*bcb85aadSSteve Yin no actions. 584*bcb85aadSSteve Yin @retval S_OK 585*bcb85aadSSteve Yin @note This method is missing a [propget] prefix in the IDL. The result is the 586*bcb85aadSSteve Yin method is named nActions in generated C++ code instead of get_nActions. 587*bcb85aadSSteve Yin */ 588*bcb85aadSSteve Yin HRESULT nActions 589*bcb85aadSSteve Yin ( 590*bcb85aadSSteve Yin [out,retval] long* nActions 591*bcb85aadSSteve Yin ); 592*bcb85aadSSteve Yin 593*bcb85aadSSteve Yin /** @brief Performs the specified Action on the object. 594*bcb85aadSSteve Yin @param [in] actionIndex 595*bcb85aadSSteve Yin 0 based index specifying the action to perform. If it lies outside 596*bcb85aadSSteve Yin the valid range no action is performed. 597*bcb85aadSSteve Yin @retval S_OK 598*bcb85aadSSteve Yin @retval S_FALSE if action could not be performed 599*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 600*bcb85aadSSteve Yin @note If implementing support for media, refer to the predefined constants in the ::IA2Actions enum. 601*bcb85aadSSteve Yin */ 602*bcb85aadSSteve Yin HRESULT doAction 603*bcb85aadSSteve Yin ( 604*bcb85aadSSteve Yin [in] long actionIndex 605*bcb85aadSSteve Yin ); 606*bcb85aadSSteve Yin 607*bcb85aadSSteve Yin /** @brief Returns a description of the specified action of the object. 608*bcb85aadSSteve Yin @param [in] actionIndex 609*bcb85aadSSteve Yin 0 based index specifying which action's description to return. 610*bcb85aadSSteve Yin If it lies outside the valid range an empty string is returned. 611*bcb85aadSSteve Yin @param [out] description 612*bcb85aadSSteve Yin The returned value is a localized string of the specified action. 613*bcb85aadSSteve Yin @retval S_OK 614*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 615*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 616*bcb85aadSSteve Yin */ 617*bcb85aadSSteve Yin [propget] HRESULT description 618*bcb85aadSSteve Yin ( 619*bcb85aadSSteve Yin [in] long actionIndex, 620*bcb85aadSSteve Yin [out, retval] BSTR *description 621*bcb85aadSSteve Yin ); 622*bcb85aadSSteve Yin 623*bcb85aadSSteve Yin /** @brief Returns an array of BSTRs describing one or more key bindings, if 624*bcb85aadSSteve Yin there are any, associated with the specified action. 625*bcb85aadSSteve Yin 626*bcb85aadSSteve Yin The returned strings are the localized human readable key sequences to be 627*bcb85aadSSteve Yin used to activate each action, e.g. "Ctrl+Shift+D". Since these key 628*bcb85aadSSteve Yin sequences are to be used when the object has focus, they are like 629*bcb85aadSSteve Yin mnemonics (access keys), and not like shortcut (accelerator) keys. 630*bcb85aadSSteve Yin 631*bcb85aadSSteve Yin There is no need to implement this method for single action controls since 632*bcb85aadSSteve Yin that would be redundant with the standard MSAA programming practice of 633*bcb85aadSSteve Yin getting the mnemonic from get_accKeyboardShortcut. 634*bcb85aadSSteve Yin 635*bcb85aadSSteve Yin An AT such as an On Screen Keyboard might not expose these bindings but 636*bcb85aadSSteve Yin provide alternative means of activation. 637*bcb85aadSSteve Yin 638*bcb85aadSSteve Yin Note: the client allocates and passes in an array of pointers. The server 639*bcb85aadSSteve Yin allocates the BSTRs and passes back one or more pointers to these BSTRs into 640*bcb85aadSSteve Yin the array of pointers allocated by the client. The client is responsible 641*bcb85aadSSteve Yin for deallocating the BSTRs. 642*bcb85aadSSteve Yin 643*bcb85aadSSteve Yin @param [in] actionIndex 644*bcb85aadSSteve Yin 0 based index specifying which action's key bindings should be returned. 645*bcb85aadSSteve Yin @param [in] nMaxBindings 646*bcb85aadSSteve Yin This parameter is ignored. Refer to @ref _arrayConsideration 647*bcb85aadSSteve Yin "Special Consideration when using Arrays" for more details. 648*bcb85aadSSteve Yin @param [out] keyBindings 649*bcb85aadSSteve Yin An array of BSTRs, allocated by the server, one for each key binding. 650*bcb85aadSSteve Yin The client must free it with CoTaskMemFree. 651*bcb85aadSSteve Yin @param [out] nBindings 652*bcb85aadSSteve Yin The number of key bindings returned; the size of the returned array. 653*bcb85aadSSteve Yin @retval S_OK 654*bcb85aadSSteve Yin @retval S_FALSE if there are no key bindings, [out] values are NULL and 0 respectively 655*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 656*bcb85aadSSteve Yin */ 657*bcb85aadSSteve Yin [propget] HRESULT keyBinding 658*bcb85aadSSteve Yin ( 659*bcb85aadSSteve Yin [in] long actionIndex, 660*bcb85aadSSteve Yin [in] long nMaxBindings, 661*bcb85aadSSteve Yin [out, size_is(,nMaxBindings), length_is(,*nBindings)] BSTR **keyBindings, 662*bcb85aadSSteve Yin [out, retval] long *nBindings 663*bcb85aadSSteve Yin ); 664*bcb85aadSSteve Yin 665*bcb85aadSSteve Yin /** @brief Returns the non-localized name of specified action. 666*bcb85aadSSteve Yin @param [in] actionIndex 667*bcb85aadSSteve Yin 0 based index specifying which action's non-localized name should be returned. 668*bcb85aadSSteve Yin @param [out] name 669*bcb85aadSSteve Yin @retval S_OK 670*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 671*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 672*bcb85aadSSteve Yin */ 673*bcb85aadSSteve Yin [propget] HRESULT name 674*bcb85aadSSteve Yin ( 675*bcb85aadSSteve Yin [in] long actionIndex, 676*bcb85aadSSteve Yin [out, retval] BSTR *name 677*bcb85aadSSteve Yin ); 678*bcb85aadSSteve Yin 679*bcb85aadSSteve Yin /** @brief Returns the localized name of specified action. 680*bcb85aadSSteve Yin @param [in] actionIndex 681*bcb85aadSSteve Yin 0 based index specifying which action's localized name should be returned. 682*bcb85aadSSteve Yin @param [out] localizedName 683*bcb85aadSSteve Yin @retval S_OK 684*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 685*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 686*bcb85aadSSteve Yin */ 687*bcb85aadSSteve Yin [propget] HRESULT localizedName 688*bcb85aadSSteve Yin ( 689*bcb85aadSSteve Yin [in] long actionIndex, 690*bcb85aadSSteve Yin [out, retval] BSTR *localizedName 691*bcb85aadSSteve Yin ); 692*bcb85aadSSteve Yin 693*bcb85aadSSteve Yin} 694*bcb85aadSSteve Yin/************************************************************************* 695*bcb85aadSSteve Yin * 696*bcb85aadSSteve Yin * File Name (AccessibleRole.idl) 697*bcb85aadSSteve Yin * 698*bcb85aadSSteve Yin * IAccessible2 IDL Specification 699*bcb85aadSSteve Yin * 700*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 701*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 702*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 703*bcb85aadSSteve Yin * All rights reserved. 704*bcb85aadSSteve Yin * 705*bcb85aadSSteve Yin * 706*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 707*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 708*bcb85aadSSteve Yin * are met: 709*bcb85aadSSteve Yin * 710*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 711*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 712*bcb85aadSSteve Yin * 713*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 714*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 715*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 716*bcb85aadSSteve Yin * provided with the distribution. 717*bcb85aadSSteve Yin * 718*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 719*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 720*bcb85aadSSteve Yin * derived from this software without specific prior written 721*bcb85aadSSteve Yin * permission. 722*bcb85aadSSteve Yin * 723*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 724*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 725*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 726*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 727*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 728*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 729*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 730*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 731*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 732*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 733*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 734*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 735*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 736*bcb85aadSSteve Yin * 737*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 738*bcb85aadSSteve Yin * BSD License" as published at: 739*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 740*bcb85aadSSteve Yin * 741*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 742*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 743*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 744*bcb85aadSSteve Yin * 745*bcb85aadSSteve Yin ************************************************************************/ 746*bcb85aadSSteve Yin 747*bcb85aadSSteve Yin 748*bcb85aadSSteve Yin 749*bcb85aadSSteve Yin/** Collection of roles 750*bcb85aadSSteve Yin 751*bcb85aadSSteve Yin This enumerator defines an extended set of accessible roles of objects implementing 752*bcb85aadSSteve Yin the %IAccessible2 interface. These roles are in addition to the MSAA roles obtained 753*bcb85aadSSteve Yin through the MSAA get_accRole method. Examples are 'footnote', 'heading', and 754*bcb85aadSSteve Yin 'label'. You obtain an object's %IAccessible2 roles by calling IAccessible2::role. 755*bcb85aadSSteve Yin*/ 756*bcb85aadSSteve Yinenum IA2Role { 757*bcb85aadSSteve Yin 758*bcb85aadSSteve Yin /** Unknown role. The object contains some Accessible information, but its 759*bcb85aadSSteve Yin role is not known. 760*bcb85aadSSteve Yin */ 761*bcb85aadSSteve Yin IA2_ROLE_UNKNOWN = 0, 762*bcb85aadSSteve Yin 763*bcb85aadSSteve Yin /** An object that can be drawn into and to manage events from the objects 764*bcb85aadSSteve Yin drawn into it. Also refer to ::IA2_ROLE_FRAME, 765*bcb85aadSSteve Yin ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE. 766*bcb85aadSSteve Yin */ 767*bcb85aadSSteve Yin IA2_ROLE_CANVAS = 0x401, 768*bcb85aadSSteve Yin 769*bcb85aadSSteve Yin /// A caption describing another object. 770*bcb85aadSSteve Yin IA2_ROLE_CAPTION, 771*bcb85aadSSteve Yin 772*bcb85aadSSteve Yin /// Used for check buttons that are menu items. 773*bcb85aadSSteve Yin IA2_ROLE_CHECK_MENU_ITEM, 774*bcb85aadSSteve Yin 775*bcb85aadSSteve Yin /// A specialized dialog that lets the user choose a color. 776*bcb85aadSSteve Yin IA2_ROLE_COLOR_CHOOSER, 777*bcb85aadSSteve Yin 778*bcb85aadSSteve Yin /// A date editor. 779*bcb85aadSSteve Yin IA2_ROLE_DATE_EDITOR, 780*bcb85aadSSteve Yin 781*bcb85aadSSteve Yin /** An iconified internal frame in an ::IA2_ROLE_DESKTOP_PANE. 782*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_INTERNAL_FRAME. 783*bcb85aadSSteve Yin */ 784*bcb85aadSSteve Yin IA2_ROLE_DESKTOP_ICON, 785*bcb85aadSSteve Yin 786*bcb85aadSSteve Yin /** A desktop pane. A pane that supports internal frames and iconified 787*bcb85aadSSteve Yin versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME. 788*bcb85aadSSteve Yin */ 789*bcb85aadSSteve Yin IA2_ROLE_DESKTOP_PANE, 790*bcb85aadSSteve Yin 791*bcb85aadSSteve Yin /** A directory pane. A pane that allows the user to navigate through 792*bcb85aadSSteve Yin and select the contents of a directory. May be used by a file chooser. 793*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_FILE_CHOOSER. 794*bcb85aadSSteve Yin */ 795*bcb85aadSSteve Yin IA2_ROLE_DIRECTORY_PANE, 796*bcb85aadSSteve Yin 797*bcb85aadSSteve Yin /** An editable text object in a toolbar. <b>Deprecated.</b> 798*bcb85aadSSteve Yin The edit bar role was meant for a text area in a tool bar. However, to detect 799*bcb85aadSSteve Yin a text area in a tool bar the AT can query the parent. 800*bcb85aadSSteve Yin */ 801*bcb85aadSSteve Yin IA2_ROLE_EDITBAR, 802*bcb85aadSSteve Yin 803*bcb85aadSSteve Yin /// Embedded (OLE) object. 804*bcb85aadSSteve Yin IA2_ROLE_EMBEDDED_OBJECT, 805*bcb85aadSSteve Yin 806*bcb85aadSSteve Yin /// Text that is used as an endnote (footnote at the end of a chapter or section). 807*bcb85aadSSteve Yin IA2_ROLE_ENDNOTE, 808*bcb85aadSSteve Yin 809*bcb85aadSSteve Yin /** A file chooser. A specialized dialog that displays the files in the 810*bcb85aadSSteve Yin directory and lets the user select a file, browse a different directory, 811*bcb85aadSSteve Yin or specify a filename. May use the directory pane to show the contents of 812*bcb85aadSSteve Yin a directory. 813*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_DIRECTORY_PANE. 814*bcb85aadSSteve Yin */ 815*bcb85aadSSteve Yin IA2_ROLE_FILE_CHOOSER, 816*bcb85aadSSteve Yin 817*bcb85aadSSteve Yin /** A font chooser. A font chooser is a component that lets the user pick 818*bcb85aadSSteve Yin various attributes for fonts. 819*bcb85aadSSteve Yin */ 820*bcb85aadSSteve Yin IA2_ROLE_FONT_CHOOSER, 821*bcb85aadSSteve Yin 822*bcb85aadSSteve Yin /** Footer of a document page. 823*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_HEADER. 824*bcb85aadSSteve Yin */ 825*bcb85aadSSteve Yin IA2_ROLE_FOOTER, 826*bcb85aadSSteve Yin 827*bcb85aadSSteve Yin /// Text that is used as a footnote. Also refer to ::IA2_ROLE_ENDNOTE. 828*bcb85aadSSteve Yin IA2_ROLE_FOOTNOTE, 829*bcb85aadSSteve Yin 830*bcb85aadSSteve Yin /** A container of form controls. An example of the use of this role is to 831*bcb85aadSSteve Yin represent an HTML FORM tag. 832*bcb85aadSSteve Yin */ 833*bcb85aadSSteve Yin IA2_ROLE_FORM, 834*bcb85aadSSteve Yin 835*bcb85aadSSteve Yin /** Frame role. A top level window with a title bar, border, menu bar, etc. 836*bcb85aadSSteve Yin It is often used as the primary window for an application. Also refer to 837*bcb85aadSSteve Yin ::IA2_ROLE_CANVAS and the MSAA roles of dialog and window. 838*bcb85aadSSteve Yin */ 839*bcb85aadSSteve Yin IA2_ROLE_FRAME, 840*bcb85aadSSteve Yin 841*bcb85aadSSteve Yin /** A glass pane. A pane that is guaranteed to be painted on top of all panes 842*bcb85aadSSteve Yin beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and 843*bcb85aadSSteve Yin ::IA2_ROLE_ROOT_PANE. 844*bcb85aadSSteve Yin */ 845*bcb85aadSSteve Yin IA2_ROLE_GLASS_PANE, 846*bcb85aadSSteve Yin 847*bcb85aadSSteve Yin /** Header of a document page. 848*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_FOOTER. 849*bcb85aadSSteve Yin */ 850*bcb85aadSSteve Yin IA2_ROLE_HEADER, 851*bcb85aadSSteve Yin 852*bcb85aadSSteve Yin /// Heading. Use the IAccessible2::attributes level attribute to determine the heading level. 853*bcb85aadSSteve Yin IA2_ROLE_HEADING, 854*bcb85aadSSteve Yin 855*bcb85aadSSteve Yin /// A small fixed size picture, typically used to decorate components. 856*bcb85aadSSteve Yin IA2_ROLE_ICON, 857*bcb85aadSSteve Yin 858*bcb85aadSSteve Yin /** An image map object. Usually a graphic with multiple hotspots, where 859*bcb85aadSSteve Yin each hotspot can be activated resulting in the loading of another document 860*bcb85aadSSteve Yin or section of a document. 861*bcb85aadSSteve Yin */ 862*bcb85aadSSteve Yin IA2_ROLE_IMAGE_MAP, 863*bcb85aadSSteve Yin 864*bcb85aadSSteve Yin /** An object which is used to allow input of characters not found on a keyboard, 865*bcb85aadSSteve Yin such as the input of Chinese characters on a Western keyboard. 866*bcb85aadSSteve Yin */ 867*bcb85aadSSteve Yin IA2_ROLE_INPUT_METHOD_WINDOW, 868*bcb85aadSSteve Yin 869*bcb85aadSSteve Yin /** An internal frame. A frame-like object that is clipped by a desktop pane. 870*bcb85aadSSteve Yin The desktop pane, internal frame, and desktop icon objects are often used to 871*bcb85aadSSteve Yin create multiple document interfaces within an application. 872*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME. 873*bcb85aadSSteve Yin */ 874*bcb85aadSSteve Yin IA2_ROLE_INTERNAL_FRAME, 875*bcb85aadSSteve Yin 876*bcb85aadSSteve Yin /// An object used to present an icon or short string in an interface. 877*bcb85aadSSteve Yin IA2_ROLE_LABEL, 878*bcb85aadSSteve Yin 879*bcb85aadSSteve Yin /** A layered pane. A specialized pane that allows its children to be drawn 880*bcb85aadSSteve Yin in layers, providing a form of stacking order. This is usually the pane that 881*bcb85aadSSteve Yin holds the menu bar as well as the pane that contains most of the visual 882*bcb85aadSSteve Yin components in a window. 883*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE. 884*bcb85aadSSteve Yin */ 885*bcb85aadSSteve Yin IA2_ROLE_LAYERED_PANE, 886*bcb85aadSSteve Yin 887*bcb85aadSSteve Yin /** A section whose content is parenthetic or ancillary to the main content 888*bcb85aadSSteve Yin of the resource. 889*bcb85aadSSteve Yin */ 890*bcb85aadSSteve Yin IA2_ROLE_NOTE, 891*bcb85aadSSteve Yin 892*bcb85aadSSteve Yin /** A specialized pane whose primary use is inside a dialog. 893*bcb85aadSSteve Yin Also refer to MSAA's dialog role. 894*bcb85aadSSteve Yin */ 895*bcb85aadSSteve Yin IA2_ROLE_OPTION_PANE, 896*bcb85aadSSteve Yin 897*bcb85aadSSteve Yin /** An object representing a page of document content. It is used in documents 898*bcb85aadSSteve Yin which are accessed by the user on a page by page basis. 899*bcb85aadSSteve Yin */ 900*bcb85aadSSteve Yin IA2_ROLE_PAGE, 901*bcb85aadSSteve Yin 902*bcb85aadSSteve Yin /// A paragraph of text. 903*bcb85aadSSteve Yin IA2_ROLE_PARAGRAPH, 904*bcb85aadSSteve Yin 905*bcb85aadSSteve Yin /** A radio button that is a menu item. 906*bcb85aadSSteve Yin Also refer to MSAA's button and menu item roles. 907*bcb85aadSSteve Yin */ 908*bcb85aadSSteve Yin IA2_ROLE_RADIO_MENU_ITEM, 909*bcb85aadSSteve Yin 910*bcb85aadSSteve Yin /** An object which is redundant with another object in the accessible hierarchy. 911*bcb85aadSSteve Yin ATs typically ignore objects with this role. 912*bcb85aadSSteve Yin */ 913*bcb85aadSSteve Yin IA2_ROLE_REDUNDANT_OBJECT, 914*bcb85aadSSteve Yin 915*bcb85aadSSteve Yin /** A root pane. A specialized pane that has a glass pane and a layered pane 916*bcb85aadSSteve Yin as its children. 917*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_LAYERED_PANE 918*bcb85aadSSteve Yin */ 919*bcb85aadSSteve Yin IA2_ROLE_ROOT_PANE, 920*bcb85aadSSteve Yin 921*bcb85aadSSteve Yin /** A ruler such as those used in word processors. 922*bcb85aadSSteve Yin */ 923*bcb85aadSSteve Yin IA2_ROLE_RULER, 924*bcb85aadSSteve Yin 925*bcb85aadSSteve Yin /** A scroll pane. An object that allows a user to incrementally view a large 926*bcb85aadSSteve Yin amount of information. Its children can include scroll bars and a viewport. 927*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_VIEW_PORT and MSAA's scroll bar role. 928*bcb85aadSSteve Yin */ 929*bcb85aadSSteve Yin IA2_ROLE_SCROLL_PANE, 930*bcb85aadSSteve Yin 931*bcb85aadSSteve Yin /** A container of document content. An example of the use of this role is to 932*bcb85aadSSteve Yin represent an HTML DIV tag. A section may be used as a region. A region is a 933*bcb85aadSSteve Yin group of elements that together form a perceivable unit. A region does not 934*bcb85aadSSteve Yin necessarily follow the logical structure of the content, but follows the 935*bcb85aadSSteve Yin perceivable structure of the page. A region may have an attribute in the set 936*bcb85aadSSteve Yin of IAccessible2::attributes which indicates that it is "live". A live region 937*bcb85aadSSteve Yin is content that is likely to change in response to a timed change, a user 938*bcb85aadSSteve Yin event, or some other programmed logic or event. 939*bcb85aadSSteve Yin */ 940*bcb85aadSSteve Yin IA2_ROLE_SECTION, 941*bcb85aadSSteve Yin 942*bcb85aadSSteve Yin /// Object with graphical representation used to represent content on draw pages. 943*bcb85aadSSteve Yin IA2_ROLE_SHAPE, 944*bcb85aadSSteve Yin 945*bcb85aadSSteve Yin /** A split pane. A specialized panel that presents two other panels at the 946*bcb85aadSSteve Yin same time. Between the two panels is a divider the user can manipulate to make 947*bcb85aadSSteve Yin one panel larger and the other panel smaller. 948*bcb85aadSSteve Yin */ 949*bcb85aadSSteve Yin IA2_ROLE_SPLIT_PANE, 950*bcb85aadSSteve Yin 951*bcb85aadSSteve Yin /** An object that forms part of a menu system but which can be "undocked" 952*bcb85aadSSteve Yin from or "torn off" the menu system to exist as a separate window. 953*bcb85aadSSteve Yin */ 954*bcb85aadSSteve Yin IA2_ROLE_TEAR_OFF_MENU, 955*bcb85aadSSteve Yin 956*bcb85aadSSteve Yin /// An object used as a terminal emulator. 957*bcb85aadSSteve Yin IA2_ROLE_TERMINAL, 958*bcb85aadSSteve Yin 959*bcb85aadSSteve Yin /// Collection of objects that constitute a logical text entity. 960*bcb85aadSSteve Yin IA2_ROLE_TEXT_FRAME, 961*bcb85aadSSteve Yin 962*bcb85aadSSteve Yin /** A toggle button. A specialized push button that can be checked or unchecked, 963*bcb85aadSSteve Yin but does not provide a separate indicator for the current state. 964*bcb85aadSSteve Yin Also refer to MSAA's roles of push button, check box, and radio button. 965*bcb85aadSSteve Yin <BR><B>Note:</B> IA2_ROLE_TOGGLE_BUTTON should not be used. Instead, use MSAA's 966*bcb85aadSSteve Yin ROLE_SYSTEM_PUSHBUTTON and STATE_SYSTEM_PRESSED. 967*bcb85aadSSteve Yin */ 968*bcb85aadSSteve Yin IA2_ROLE_TOGGLE_BUTTON, 969*bcb85aadSSteve Yin 970*bcb85aadSSteve Yin /** A viewport. An object usually used in a scroll pane. It represents the 971*bcb85aadSSteve Yin portion of the entire data that the user can see. As the user manipulates 972*bcb85aadSSteve Yin the scroll bars, the contents of the viewport can change. 973*bcb85aadSSteve Yin Also refer to ::IA2_ROLE_SCROLL_PANE. 974*bcb85aadSSteve Yin */ 975*bcb85aadSSteve Yin IA2_ROLE_VIEW_PORT, 976*bcb85aadSSteve Yin 977*bcb85aadSSteve Yin /** An object containing content which is complementary to the main content of 978*bcb85aadSSteve Yin a document, but remains meaningful when separated from the main content. There 979*bcb85aadSSteve Yin are various types of content that would appropriately have this role. For example, 980*bcb85aadSSteve Yin in the case where content is delivered via a web portal to a web browser, this may 981*bcb85aadSSteve Yin include but not be limited to show times, current weather, related articles, or 982*bcb85aadSSteve Yin stocks to watch. The complementary role indicates that contained content is relevant 983*bcb85aadSSteve Yin to the main content. If the complementary content is completely separable main 984*bcb85aadSSteve Yin content, it may be appropriate to use a more general role. 985*bcb85aadSSteve Yin */ 986*bcb85aadSSteve Yin IA2_ROLE_COMPLEMENTARY_CONTENT 987*bcb85aadSSteve Yin 988*bcb85aadSSteve Yin}; 989*bcb85aadSSteve Yin/************************************************************************* 990*bcb85aadSSteve Yin * 991*bcb85aadSSteve Yin * File Name (AccessibleStates.idl) 992*bcb85aadSSteve Yin * 993*bcb85aadSSteve Yin * IAccessible2 IDL Specification 994*bcb85aadSSteve Yin * 995*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 996*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 997*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 998*bcb85aadSSteve Yin * All rights reserved. 999*bcb85aadSSteve Yin * 1000*bcb85aadSSteve Yin * 1001*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 1002*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 1003*bcb85aadSSteve Yin * are met: 1004*bcb85aadSSteve Yin * 1005*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 1006*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 1007*bcb85aadSSteve Yin * 1008*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 1009*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 1010*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 1011*bcb85aadSSteve Yin * provided with the distribution. 1012*bcb85aadSSteve Yin * 1013*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 1014*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 1015*bcb85aadSSteve Yin * derived from this software without specific prior written 1016*bcb85aadSSteve Yin * permission. 1017*bcb85aadSSteve Yin * 1018*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 1019*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 1020*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1021*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1022*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 1023*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1024*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1025*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 1026*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1027*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1028*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 1029*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 1030*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1031*bcb85aadSSteve Yin * 1032*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 1033*bcb85aadSSteve Yin * BSD License" as published at: 1034*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 1035*bcb85aadSSteve Yin * 1036*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 1037*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 1038*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 1039*bcb85aadSSteve Yin * 1040*bcb85aadSSteve Yin ************************************************************************/ 1041*bcb85aadSSteve Yin 1042*bcb85aadSSteve Yin 1043*bcb85aadSSteve Yin 1044*bcb85aadSSteve Yintypedef long AccessibleStates; 1045*bcb85aadSSteve Yin 1046*bcb85aadSSteve Yin/** %IAccessible2 specific state bit constants 1047*bcb85aadSSteve Yin 1048*bcb85aadSSteve Yin This enum defines the state bits returned by IAccessible2::states. The 1049*bcb85aadSSteve Yin %IAccessible2 state bits are in addition to those returned by MSAA. 1050*bcb85aadSSteve Yin*/ 1051*bcb85aadSSteve Yinenum IA2States { 1052*bcb85aadSSteve Yin 1053*bcb85aadSSteve Yin/** Indicates a window is currently the active window, or is an active subelement 1054*bcb85aadSSteve Yin within a container or table. 1055*bcb85aadSSteve Yin 1056*bcb85aadSSteve Yin This state can be used to indicate the current active item in a container, even 1057*bcb85aadSSteve Yin if the container itself is not currently active. In other words this would indicate 1058*bcb85aadSSteve Yin the item that will get focus if you tab to the container. 1059*bcb85aadSSteve Yin 1060*bcb85aadSSteve Yin This information is important for knowing what to report for trees and potentially 1061*bcb85aadSSteve Yin other containers in a virtual buffer. 1062*bcb85aadSSteve Yin 1063*bcb85aadSSteve Yin Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. 1064*bcb85aadSSteve Yin*/ 1065*bcb85aadSSteve YinIA2_STATE_ACTIVE = 0x1, 1066*bcb85aadSSteve Yin 1067*bcb85aadSSteve Yin/** Indicates that the object is armed. 1068*bcb85aadSSteve Yin 1069*bcb85aadSSteve Yin Used to indicate that the control is "pressed" and will be invoked when the 1070*bcb85aadSSteve Yin actuator, e.g. a mouse button, is "released". An AT which either monitors the 1071*bcb85aadSSteve Yin mouse or synthesizes mouse events might need to know that, and possibly a talking 1072*bcb85aadSSteve Yin interface would even let the user know about it. It could also potentially be 1073*bcb85aadSSteve Yin useful to on screen keyboards or test tools since the information does indicate 1074*bcb85aadSSteve Yin something about the state of the interface, for example, code operating asynchronously 1075*bcb85aadSSteve Yin might need to wait for the armed state to change before doing something else. 1076*bcb85aadSSteve Yin 1077*bcb85aadSSteve Yin*/ 1078*bcb85aadSSteve YinIA2_STATE_ARMED = 0x2, 1079*bcb85aadSSteve Yin 1080*bcb85aadSSteve Yin/** Indicates the user interface object corresponding to this object no longer exists. */ 1081*bcb85aadSSteve YinIA2_STATE_DEFUNCT = 0x4, 1082*bcb85aadSSteve Yin 1083*bcb85aadSSteve Yin/** An object with this state has a caret and implements the IAccessibleText interface. 1084*bcb85aadSSteve Yin 1085*bcb85aadSSteve Yin Such fields may be read-only, so STATE_SYSTEM_READONLY is valid in combination 1086*bcb85aadSSteve Yin with IA2_STATE_EDITABLE. 1087*bcb85aadSSteve Yin 1088*bcb85aadSSteve Yin*/ 1089*bcb85aadSSteve YinIA2_STATE_EDITABLE = 0x8, 1090*bcb85aadSSteve Yin 1091*bcb85aadSSteve Yin/** Indicates the orientation of this object is horizontal. */ 1092*bcb85aadSSteve YinIA2_STATE_HORIZONTAL = 0x10, 1093*bcb85aadSSteve Yin 1094*bcb85aadSSteve Yin/** Indicates this object is minimized and is represented only by an icon. */ 1095*bcb85aadSSteve YinIA2_STATE_ICONIFIED = 0x20, 1096*bcb85aadSSteve Yin 1097*bcb85aadSSteve Yin/** Indicates an input validation failure. */ 1098*bcb85aadSSteve YinIA2_STATE_INVALID_ENTRY = 0x40, 1099*bcb85aadSSteve Yin 1100*bcb85aadSSteve Yin/** Indicates that this object manages its children. 1101*bcb85aadSSteve Yin 1102*bcb85aadSSteve Yin Note: Due to the fact that MSAA's WinEvents don't allow the active child index 1103*bcb85aadSSteve Yin to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages 1104*bcb85aadSSteve Yin descendants scheme can't be used. Instead the active child object has to fire 1105*bcb85aadSSteve Yin MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be 1106*bcb85aadSSteve Yin added to provide for event specific data to be passed with the event. At that 1107*bcb85aadSSteve Yin time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and 1108*bcb85aadSSteve Yin IA2_STATE_MANAGES_DESCENDANTS state would be useful. 1109*bcb85aadSSteve Yin*/ 1110*bcb85aadSSteve YinIA2_STATE_MANAGES_DESCENDANTS = 0x80, 1111*bcb85aadSSteve Yin 1112*bcb85aadSSteve Yin/** Indicates that an object is modal. 1113*bcb85aadSSteve Yin 1114*bcb85aadSSteve Yin Modal objects have the behavior that something must be done with the object 1115*bcb85aadSSteve Yin before the user can interact with an object in a different window. 1116*bcb85aadSSteve Yin*/ 1117*bcb85aadSSteve YinIA2_STATE_MODAL = 0x100, 1118*bcb85aadSSteve Yin 1119*bcb85aadSSteve Yin/** Indicates this text object can contain multiple lines of text. */ 1120*bcb85aadSSteve YinIA2_STATE_MULTI_LINE = 0x200, 1121*bcb85aadSSteve Yin 1122*bcb85aadSSteve Yin/** Indicates this object paints every pixel within its rectangular region. */ 1123*bcb85aadSSteve YinIA2_STATE_OPAQUE = 0x400, 1124*bcb85aadSSteve Yin 1125*bcb85aadSSteve Yin/** Indicates that user interaction is required. 1126*bcb85aadSSteve Yin 1127*bcb85aadSSteve Yin An example of when this state is used is when a field in a form must be filled 1128*bcb85aadSSteve Yin before a form can be processed. 1129*bcb85aadSSteve Yin*/ 1130*bcb85aadSSteve YinIA2_STATE_REQUIRED = 0x800, 1131*bcb85aadSSteve Yin 1132*bcb85aadSSteve Yin/** Indicates an object which supports text selection. 1133*bcb85aadSSteve Yin 1134*bcb85aadSSteve Yin Note: This is different than MSAA STATE_SYSTEM_SELECTABLE. 1135*bcb85aadSSteve Yin*/ 1136*bcb85aadSSteve YinIA2_STATE_SELECTABLE_TEXT = 0x1000, 1137*bcb85aadSSteve Yin 1138*bcb85aadSSteve Yin/** Indicates that this text object can contain only a single line of text. */ 1139*bcb85aadSSteve YinIA2_STATE_SINGLE_LINE = 0x2000, 1140*bcb85aadSSteve Yin 1141*bcb85aadSSteve Yin/** Indicates that the accessible object is stale. 1142*bcb85aadSSteve Yin 1143*bcb85aadSSteve Yin This state is used when the accessible object no longer accurately 1144*bcb85aadSSteve Yin represents the state of the object which it is representing such as when an 1145*bcb85aadSSteve Yin object is transient or when an object has been or is in the process of being 1146*bcb85aadSSteve Yin destroyed or when the object's index in its parent has changed. 1147*bcb85aadSSteve Yin*/ 1148*bcb85aadSSteve YinIA2_STATE_STALE = 0x4000, 1149*bcb85aadSSteve Yin 1150*bcb85aadSSteve Yin/** Indicates that the object implements autocompletion. 1151*bcb85aadSSteve Yin 1152*bcb85aadSSteve Yin This state indicates that a text control will respond to the input of 1153*bcb85aadSSteve Yin one ore more characters and cause a sub-item to become selected. The 1154*bcb85aadSSteve Yin selection may also result in events fired on the parent object. 1155*bcb85aadSSteve Yin*/ 1156*bcb85aadSSteve YinIA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000, 1157*bcb85aadSSteve Yin 1158*bcb85aadSSteve Yin/** Indicates this object is transient. 1159*bcb85aadSSteve Yin 1160*bcb85aadSSteve Yin An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS. 1161*bcb85aadSSteve Yin For example, a list item object may be managed by its parent list object and may only 1162*bcb85aadSSteve Yin exist as long as the object is actually rendered. Similarly a table cell's accessible 1163*bcb85aadSSteve Yin object may exist only while the cell has focus. However, from the perspective of an 1164*bcb85aadSSteve Yin assistive technology a transient object behaves like a non-transient object. As a 1165*bcb85aadSSteve Yin result it is likely that this state is not of use to an assistive technology, but it 1166*bcb85aadSSteve Yin is provided in case an assistive technology determines that knowledge of the transient 1167*bcb85aadSSteve Yin nature of the object is useful and also for harmony with the Linux accessibility API. 1168*bcb85aadSSteve Yin 1169*bcb85aadSSteve Yin Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. 1170*bcb85aadSSteve Yin */ 1171*bcb85aadSSteve YinIA2_STATE_TRANSIENT = 0x10000, 1172*bcb85aadSSteve Yin 1173*bcb85aadSSteve Yin/** Indicates the orientation of this object is vertical. */ 1174*bcb85aadSSteve YinIA2_STATE_VERTICAL = 0x20000, 1175*bcb85aadSSteve Yin 1176*bcb85aadSSteve Yin/** Indicates this object is checkable. 1177*bcb85aadSSteve Yin 1178*bcb85aadSSteve Yin The standard checkable objects are check boxes, radio buttons, check box menu 1179*bcb85aadSSteve Yin items, radio menu items, and toggle buttons. Since assistive technology will 1180*bcb85aadSSteve Yin determine that these objects are checkable via the object's role the checkable 1181*bcb85aadSSteve Yin state is not required. However, this state is necessary in those cases where 1182*bcb85aadSSteve Yin an object has a role which is not one of the previously mentioned roles. An 1183*bcb85aadSSteve Yin example is a table cell which indicates whether or not an email has an attachment, 1184*bcb85aadSSteve Yin whether or not an mail is considered spam, and whether or not an email has been read. 1185*bcb85aadSSteve Yin */ 1186*bcb85aadSSteve YinIA2_STATE_CHECKABLE = 0x40000, 1187*bcb85aadSSteve Yin 1188*bcb85aadSSteve Yin/** Indicates this object is pinned. 1189*bcb85aadSSteve Yin 1190*bcb85aadSSteve Yin This state indicates that an object is fixed at a certain location. One example 1191*bcb85aadSSteve Yin is a browser tab that when pinned cannot be moved until unpinned. Another example 1192*bcb85aadSSteve Yin is a movable or floating object that when pinned remains in its pinned location 1193*bcb85aadSSteve Yin until being unpinned. 1194*bcb85aadSSteve Yin */ 1195*bcb85aadSSteve YinIA2_STATE_PINNED = 0x80000 1196*bcb85aadSSteve Yin 1197*bcb85aadSSteve Yin}; 1198*bcb85aadSSteve Yin/************************************************************************* 1199*bcb85aadSSteve Yin * 1200*bcb85aadSSteve Yin * File Name (Accessible2.idl) 1201*bcb85aadSSteve Yin * 1202*bcb85aadSSteve Yin * IAccessible2 IDL Specification 1203*bcb85aadSSteve Yin * 1204*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 1205*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 1206*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 1207*bcb85aadSSteve Yin * All rights reserved. 1208*bcb85aadSSteve Yin * 1209*bcb85aadSSteve Yin * 1210*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 1211*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 1212*bcb85aadSSteve Yin * are met: 1213*bcb85aadSSteve Yin * 1214*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 1215*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 1216*bcb85aadSSteve Yin * 1217*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 1218*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 1219*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 1220*bcb85aadSSteve Yin * provided with the distribution. 1221*bcb85aadSSteve Yin * 1222*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 1223*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 1224*bcb85aadSSteve Yin * derived from this software without specific prior written 1225*bcb85aadSSteve Yin * permission. 1226*bcb85aadSSteve Yin * 1227*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 1228*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 1229*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1230*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1231*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 1232*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1233*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1234*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 1235*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1236*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1237*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 1238*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 1239*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1240*bcb85aadSSteve Yin * 1241*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 1242*bcb85aadSSteve Yin * BSD License" as published at: 1243*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 1244*bcb85aadSSteve Yin * 1245*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 1246*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 1247*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 1248*bcb85aadSSteve Yin * 1249*bcb85aadSSteve Yin ************************************************************************/ 1250*bcb85aadSSteve Yin 1251*bcb85aadSSteve Yin/** @mainpage 1252*bcb85aadSSteve Yin 1253*bcb85aadSSteve Yin @section _interfaces Interfaces 1254*bcb85aadSSteve Yin IAccessible2\n 1255*bcb85aadSSteve Yin IAccessible2_2\n 1256*bcb85aadSSteve Yin IAccessibleAction\n 1257*bcb85aadSSteve Yin IAccessibleApplication\n 1258*bcb85aadSSteve Yin IAccessibleComponent\n 1259*bcb85aadSSteve Yin IAccessibleDocument\n 1260*bcb85aadSSteve Yin IAccessibleEditableText\n 1261*bcb85aadSSteve Yin IAccessibleHypertext\n 1262*bcb85aadSSteve Yin IAccessibleHypertext2\n 1263*bcb85aadSSteve Yin IAccessibleHyperlink\n 1264*bcb85aadSSteve Yin IAccessibleImage\n 1265*bcb85aadSSteve Yin IAccessibleRelation\n 1266*bcb85aadSSteve Yin IAccessibleTable [Deprecated]\n 1267*bcb85aadSSteve Yin IAccessibleTable2\n 1268*bcb85aadSSteve Yin IAccessibleTableCell\n 1269*bcb85aadSSteve Yin IAccessibleText\n 1270*bcb85aadSSteve Yin IAccessibleText2\n 1271*bcb85aadSSteve Yin IAccessibleValue 1272*bcb85aadSSteve Yin 1273*bcb85aadSSteve Yin @section _structs Structs 1274*bcb85aadSSteve Yin IA2Locale\n 1275*bcb85aadSSteve Yin IA2TableModelChange\n 1276*bcb85aadSSteve Yin IA2TextSegment 1277*bcb85aadSSteve Yin 1278*bcb85aadSSteve Yin @section _enums Enums 1279*bcb85aadSSteve Yin ::IA2Actions values are predefined actions for use when implementing support for HTML5 media.\n 1280*bcb85aadSSteve Yin ::IA2CoordinateType values define the requested coordinate type (screen or parent window).\n 1281*bcb85aadSSteve Yin ::IA2EventID values identify events.\n 1282*bcb85aadSSteve Yin ::IA2Role values defines roles which are in addition to the existing MSAA roles.\n 1283*bcb85aadSSteve Yin ::IA2ScrollType values define where to place an object or substring on the screen.\n 1284*bcb85aadSSteve Yin ::IA2States values define states which are in addition to the existing MSAA states.\n 1285*bcb85aadSSteve Yin ::IA2TableModelChangeType values describe the kinds of changes made to a table (insert, delete, update).\n 1286*bcb85aadSSteve Yin ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph).\n 1287*bcb85aadSSteve Yin ::IA2TextSpecialOffsets values define special offsets for use in the text interfaces. 1288*bcb85aadSSteve Yin 1289*bcb85aadSSteve Yin @section _constants Constants 1290*bcb85aadSSteve Yin @ref grpRelations 1291*bcb85aadSSteve Yin 1292*bcb85aadSSteve Yin @section _misc Miscellaneous 1293*bcb85aadSSteve Yin @ref _licensePage "BSD License"\n 1294*bcb85aadSSteve Yin @ref _generalInfo "General Information"\n 1295*bcb85aadSSteve Yin 1296*bcb85aadSSteve Yin @page _licensePage BSD License 1297*bcb85aadSSteve Yin %IAccessible2 IDL Specification 1298*bcb85aadSSteve Yin 1299*bcb85aadSSteve Yin Copyright (c) 2007, 2013 Linux Foundation\n 1300*bcb85aadSSteve Yin Copyright (c) 2006 IBM Corporation\n 1301*bcb85aadSSteve Yin Copyright (c) 2000, 2006 Sun Microsystems, Inc.\n 1302*bcb85aadSSteve Yin All rights reserved. 1303*bcb85aadSSteve Yin 1304*bcb85aadSSteve Yin Redistribution and use in source and binary forms, with or without 1305*bcb85aadSSteve Yin modification, are permitted provided that the following conditions 1306*bcb85aadSSteve Yin are met: 1307*bcb85aadSSteve Yin 1308*bcb85aadSSteve Yin 1. Redistributions of source code must retain the above copyright 1309*bcb85aadSSteve Yin notice, this list of conditions and the following disclaimer. 1310*bcb85aadSSteve Yin 1311*bcb85aadSSteve Yin 2. Redistributions in binary form must reproduce the above 1312*bcb85aadSSteve Yin copyright notice, this list of conditions and the following 1313*bcb85aadSSteve Yin disclaimer in the documentation and/or other materials 1314*bcb85aadSSteve Yin provided with the distribution. 1315*bcb85aadSSteve Yin 1316*bcb85aadSSteve Yin 3. Neither the name of the Linux Foundation nor the names of its 1317*bcb85aadSSteve Yin contributors may be used to endorse or promote products 1318*bcb85aadSSteve Yin derived from this software without specific prior written 1319*bcb85aadSSteve Yin permission. 1320*bcb85aadSSteve Yin 1321*bcb85aadSSteve Yin THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 1322*bcb85aadSSteve Yin CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 1323*bcb85aadSSteve Yin INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1324*bcb85aadSSteve Yin MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1325*bcb85aadSSteve Yin DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 1326*bcb85aadSSteve Yin CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1327*bcb85aadSSteve Yin SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1328*bcb85aadSSteve Yin NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 1329*bcb85aadSSteve Yin LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1330*bcb85aadSSteve Yin HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1331*bcb85aadSSteve Yin CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 1332*bcb85aadSSteve Yin OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 1333*bcb85aadSSteve Yin EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1334*bcb85aadSSteve Yin 1335*bcb85aadSSteve Yin This BSD License conforms to the Open Source Initiative "Simplified 1336*bcb85aadSSteve Yin BSD License" as published at: 1337*bcb85aadSSteve Yin http://www.opensource.org/licenses/bsd-license.php 1338*bcb85aadSSteve Yin 1339*bcb85aadSSteve Yin %IAccessible2 is a trademark of the Linux Foundation. The %IAccessible2 1340*bcb85aadSSteve Yin mark may be used in accordance with the 1341*bcb85aadSSteve Yin <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/trademark-policy"> 1342*bcb85aadSSteve Yin Linux Foundation Trademark Policy</a> to indicate compliance with the %IAccessible2 specification. 1343*bcb85aadSSteve Yin 1344*bcb85aadSSteve Yin @page _generalInfo General Information 1345*bcb85aadSSteve Yin The following information is applicable to two or more interfaces. 1346*bcb85aadSSteve Yin 1347*bcb85aadSSteve Yin @ref _errors\n 1348*bcb85aadSSteve Yin @ref _memory\n 1349*bcb85aadSSteve Yin @ref _arrayConsideration\n 1350*bcb85aadSSteve Yin @ref _indexes\n 1351*bcb85aadSSteve Yin @ref _enumBase\n 1352*bcb85aadSSteve Yin @ref _specialOffsets\n 1353*bcb85aadSSteve Yin @ref _dicoveringInterfaces\n 1354*bcb85aadSSteve Yin @ref _changingInterfaces\n 1355*bcb85aadSSteve Yin @ref _applicationInfo\n 1356*bcb85aadSSteve Yin @ref _childIDs\n 1357*bcb85aadSSteve Yin @ref _variants\n 1358*bcb85aadSSteve Yin @ref _iaaction-iahyperlink\n 1359*bcb85aadSSteve Yin @ref _trademark 1360*bcb85aadSSteve Yin 1361*bcb85aadSSteve Yin @section _errors Error Handling 1362*bcb85aadSSteve Yin HRESULT values are defined by the Microsoft® Win32® API. For more information, refer to 1363*bcb85aadSSteve Yin <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137%28v=vs.85%29.aspx"> 1364*bcb85aadSSteve Yin Interpreting HRESULT Values</a> in MSDN®. 1365*bcb85aadSSteve Yin 1366*bcb85aadSSteve Yin Note that the S_FALSE return value is considered a non-error value and the 1367*bcb85aadSSteve Yin SUCCEEDED macro will return TRUE. S_FALSE is used when there is no failure 1368*bcb85aadSSteve Yin but there was nothing valid to return, e.g. in IAccessible2::attributes when 1369*bcb85aadSSteve Yin there are no attributes. When S_FALSE is returned [out] pointer types should 1370*bcb85aadSSteve Yin be NULL and [out] longs should generally be 0, but sometimes -1 is used such 1371*bcb85aadSSteve Yin as IAccessible2::indexInParent, IAccessibleText::caretOffset, and 1372*bcb85aadSSteve Yin IAccessibleHypertext::hyperlinkIndex. 1373*bcb85aadSSteve Yin 1374*bcb85aadSSteve Yin Note that for BSTR [out] variables common COM practice is that the server does 1375*bcb85aadSSteve Yin the SysAllocString and the client does the SysFreeString. Also note that when 1376*bcb85aadSSteve Yin NULL is returned there is no need for the client to call SysFreeString. Please 1377*bcb85aadSSteve Yin refer to the documentation for each method for more details regarding error handling. 1378*bcb85aadSSteve Yin 1379*bcb85aadSSteve Yin @section _memory Memory Management 1380*bcb85aadSSteve Yin The following memory management issues should be considered: 1381*bcb85aadSSteve Yin @li Although [out] BSTR variables are declared by the client, their space is 1382*bcb85aadSSteve Yin allocated by the server. They need to be freed with SysFreeString by the 1383*bcb85aadSSteve Yin client at end of life; the same is true when BSTRs are used in structs or 1384*bcb85aadSSteve Yin arrays which are passed to the server. 1385*bcb85aadSSteve Yin @li If there is no valid [out] BSTR to return, the server should return S_FALSE and 1386*bcb85aadSSteve Yin assign NULL to the output, e.g. *theOutBSTR = NULL;. 1387*bcb85aadSSteve Yin @li COM interfaces need to be referenced with AddRef when used and dereferenced 1388*bcb85aadSSteve Yin with Release at end of life. 1389*bcb85aadSSteve Yin @li Single [out] longs, HWNDs, booleans, and structs are declared by the caller 1390*bcb85aadSSteve Yin and passed by reference. The marshaller does all the memory management. 1391*bcb85aadSSteve Yin 1392*bcb85aadSSteve Yin The following articles may be helpful for understanding memory management issues: 1393*bcb85aadSSteve Yin @li An article by Don Box in a 1394*bcb85aadSSteve Yin <a href="http://www.microsoft.com/msj/1196/activex1196.aspx">Q & A section</a> 1395*bcb85aadSSteve Yin of the November 1996 edition of the Microsoft Systems Journal. 1396*bcb85aadSSteve Yin @li A posting to a CodeGuru forum, 1397*bcb85aadSSteve Yin <a href="http://www.codeguru.com/forum/showthread.php?t=364511">Windows SDK 1398*bcb85aadSSteve Yin String: What are the rules for BSTR allocation and deallocation?</a> 1399*bcb85aadSSteve Yin 1400*bcb85aadSSteve Yin @subsection _arrayConsideration Special Consideration when using Arrays 1401*bcb85aadSSteve Yin There are several methods which return arrays. In the case of IAccessible2::relations 1402*bcb85aadSSteve Yin and IAccessibleRelation::targets the client must allocate and free the arrays. 1403*bcb85aadSSteve Yin 1404*bcb85aadSSteve Yin For the remaining methods which return arrays, the server must allocate the array 1405*bcb85aadSSteve Yin and the client must free the array when no longer needed. These methods are 1406*bcb85aadSSteve Yin IAccessible2::extendedStates, IAccessible2::localizedExtendedStates, 1407*bcb85aadSSteve Yin IAccessible2_2::relationTargetsOfType, IAccessibleAction::keyBinding, 1408*bcb85aadSSteve Yin IAccessibleHypertext2::hyperlinks, IAccessibleTable::selectedChildren, 1409*bcb85aadSSteve Yin IAccessibleTable::selectedColumns, IAccessibleTable::selectedRows, 1410*bcb85aadSSteve Yin IAccessibleTable2::selectedCells, IAccessibleTable2::selectedColumns, 1411*bcb85aadSSteve Yin IAccessibleTable2::selectedRows, IAccessibleTableCell::columnHeaderCells, 1412*bcb85aadSSteve Yin and IAccessibleTableCell::rowHeaderCells. 1413*bcb85aadSSteve Yin For those methods, the server must allocate both the top level array and any storage 1414*bcb85aadSSteve Yin associated with it, e.g. for BSTRs. The server must allocate the arrays with 1415*bcb85aadSSteve Yin CoTaskMemAlloc and any BSTRs with SysAllocString. The client must use CoTaskMemFree 1416*bcb85aadSSteve Yin to free the array and any BSTRs must be freed with SysFreeString. 1417*bcb85aadSSteve Yin 1418*bcb85aadSSteve Yin Also, the IDL for IAccessible2::extendedStates, IAccessible2::localizedExtendedStates, 1419*bcb85aadSSteve Yin IAccessibleAction::keyBinding, IAccessibleTable::selectedChildren, 1420*bcb85aadSSteve Yin IAccessibleTable::selectedColumns, and IAccessibleTable::selectedRows includes an 1421*bcb85aadSSteve Yin extraneous [in] parameter for the caller to specify the max size of the array. 1422*bcb85aadSSteve Yin This parameter will be ignored by the COM server. 1423*bcb85aadSSteve Yin 1424*bcb85aadSSteve Yin @section _indexes Zero and One Based Indexes 1425*bcb85aadSSteve Yin Unless otherwise specified all offsets and indexes are 0 based. 1426*bcb85aadSSteve Yin 1427*bcb85aadSSteve Yin @section _enumBase Enum Base 1428*bcb85aadSSteve Yin Note that enums start at 0. 1429*bcb85aadSSteve Yin 1430*bcb85aadSSteve Yin @section _specialOffsets Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods 1431*bcb85aadSSteve Yin IAccessibleText and IAccessibleEditableText can use one or more of the following 1432*bcb85aadSSteve Yin special offset values. They are defined in the ::IA2TextSpecialOffsets enum. 1433*bcb85aadSSteve Yin @li Using ::IA2_TEXT_OFFSET_LENGTH (-1) as an offset in any of the IAccessibleText or 1434*bcb85aadSSteve Yin IAccessibleEditableText methods is the same as specifying the length of the string. 1435*bcb85aadSSteve Yin @li Using ::IA2_TEXT_OFFSET_CARET (-2) as an offset for IAccessibleText::textBeforeOffset, 1436*bcb85aadSSteve Yin IAccessibleText::textAtOffset, and IAccessibleText::textAfterOffset indicates that the 1437*bcb85aadSSteve Yin text related to the physical location of the caret should be used. This is needed for 1438*bcb85aadSSteve Yin applications that consider the character offset of the end of one line (as reached by 1439*bcb85aadSSteve Yin pressing the End key) the same as the offset of the first character on the next line. 1440*bcb85aadSSteve Yin Since the same offset is associated with two different lines a special means is needed 1441*bcb85aadSSteve Yin to fetch text from the line where the caret is physically located. 1442*bcb85aadSSteve Yin 1443*bcb85aadSSteve Yin @section _dicoveringInterfaces Discovery of Interfaces 1444*bcb85aadSSteve Yin In general AT (Assistive Technology) should try IAccessible2 interfaces, followed by using 1445*bcb85aadSSteve Yin the MSAA (Microsoft® Active Accessibility®) interfaces. (In cases where the an application 1446*bcb85aadSSteve Yin is known to have custom interfaces which provide information not supplied by IAccessible2 1447*bcb85aadSSteve Yin or MSAA, then those custom interfaces can be used.) The AT can then, by default, support 1448*bcb85aadSSteve Yin unknown IAccessible2/MSAA applications, without the application developers having to request 1449*bcb85aadSSteve Yin AT vendors for support on an individual application by application basis. 1450*bcb85aadSSteve Yin 1451*bcb85aadSSteve Yin When you have a reference to an IAccessible and require a reference to an IAccessible2 use 1452*bcb85aadSSteve Yin QueryService as follows: 1453*bcb85aadSSteve Yin @code 1454*bcb85aadSSteve Yin // pAcc is a reference to the accessible object's IAccessible interface. 1455*bcb85aadSSteve Yin IServiceProvider *pService = NULL; 1456*bcb85aadSSteve Yin hr = pAcc->QueryInterface(IID_IServiceProvider, (void **)&pService); 1457*bcb85aadSSteve Yin if(SUCCEEDED(hr)) { 1458*bcb85aadSSteve Yin IAccessible2 *pIA2 = NULL; 1459*bcb85aadSSteve Yin hr = pService->QueryService(IID_IAccessible, IID_IAccessible2, (void**)&pIA2); 1460*bcb85aadSSteve Yin if (SUCCEEDED(hr) && pIA2) { 1461*bcb85aadSSteve Yin // The control supports IAccessible2. 1462*bcb85aadSSteve Yin // pIA2 is the reference to the accessible object's IAccessible2 interface. 1463*bcb85aadSSteve Yin } 1464*bcb85aadSSteve Yin } 1465*bcb85aadSSteve Yin @endcode 1466*bcb85aadSSteve Yin 1467*bcb85aadSSteve Yin @section _changingInterfaces Changing between Accessible Interfaces 1468*bcb85aadSSteve Yin Note that developers must always implement MSAA's IAccessible and, if needed, some 1469*bcb85aadSSteve Yin of the interfaces in the set of IAccessible2 interfaces. Although the IAccessible2 1470*bcb85aadSSteve Yin IDL is coded such that IAccessible2 is a subclass of MSAA's IAccessible, none of 1471*bcb85aadSSteve Yin MSAA's IAccessible methods are redefined by IAccessible2. 1472*bcb85aadSSteve Yin 1473*bcb85aadSSteve Yin QueryService must be used to switch from a reference to an MSAA IAccessible interface 1474*bcb85aadSSteve Yin to another interface. This has been 1475*bcb85aadSSteve Yin <a href="http://www.atia.org/files/public/Introducing_IAccessibleEx.doc"> 1476*bcb85aadSSteve Yin documented</a> and the pertinent facts have been extracted below: 1477*bcb85aadSSteve Yin 1478*bcb85aadSSteve Yin @par 1479*bcb85aadSSteve Yin Why use QueryService instead of just using QueryInterface to get IAccessibleEx 1480*bcb85aadSSteve Yin directly? The reason is that since MSAA 2.0, clients don't talk to a server's 1481*bcb85aadSSteve Yin IAccessible interface directly; instead they talk to an intermediate MSAA-provided 1482*bcb85aadSSteve Yin wrapper that calls through to the original IAccessible. This wrapper provides services 1483*bcb85aadSSteve Yin such as implementing IDispatch, supplying information from MSAA 2.0's Dynamic Annotation 1484*bcb85aadSSteve Yin service, and scaling locations when running on Windows Vista with DPI scaling enabled. 1485*bcb85aadSSteve Yin QueryService is the supported way to expose additional interfaces from an existing 1486*bcb85aadSSteve Yin IAccessible and was originally used by MSHTML to expose IHTMLElement objects corresponding 1487*bcb85aadSSteve Yin to IAccessibles. QueryService is often more convenient for servers to implement than 1488*bcb85aadSSteve Yin QueryInterface because it does not have the same requirements for preserving object 1489*bcb85aadSSteve Yin identity or symmetry/transitivity as QueryInterface, so QueryService allows servers to 1490*bcb85aadSSteve Yin easily implement the interface on the same object or a separate object. The latter is 1491*bcb85aadSSteve Yin often hard to do with QueryInterface unless the original object supports aggregation. 1492*bcb85aadSSteve Yin 1493*bcb85aadSSteve Yin Two related references in MSDN® are: 1494*bcb85aadSSteve Yin @li <a href="http://msdn.microsoft.com/en-us/library/ms696078(VS.85).aspx"> 1495*bcb85aadSSteve Yin "Using QueryService to expose a native object model interface for an IAccessible object"</a> 1496*bcb85aadSSteve Yin @li <a href="http://msdn.microsoft.com/en-us/library/ms528415.aspx#acc_obj"> 1497*bcb85aadSSteve Yin "Accessing the Internet Explorer Object Associated with an Accessible Object"</a> 1498*bcb85aadSSteve Yin 1499*bcb85aadSSteve Yin Based on this information from Microsoft, QueryService must be used to switch back and forth 1500*bcb85aadSSteve Yin between a reference to an MSAA IAccessible interface and any of the IAccessible2 interfaces. 1501*bcb85aadSSteve Yin 1502*bcb85aadSSteve Yin Regarding switching between any of the IAccessible2 interfaces, applications implementing 1503*bcb85aadSSteve Yin IAccessible2 should implement the IAccessible2 interfaces on a single object since ATs 1504*bcb85aadSSteve Yin will be using QueryInterface to switch between the IAccessilbe2 interfaces. Implementing 1505*bcb85aadSSteve Yin the IAccessible2 interfaces on separate objects would require the use of QueryService. 1506*bcb85aadSSteve Yin There is one exception, IAccessibleApplication can be implemented on a separate object so 1507*bcb85aadSSteve Yin its common code doesn't have to be included in each accessible object. ATs should use 1508*bcb85aadSSteve Yin QueryService to access IAccessibleApplication. 1509*bcb85aadSSteve Yin 1510*bcb85aadSSteve Yin @section _applicationInfo Access to Information about the Application 1511*bcb85aadSSteve Yin Servers implementing IAccessible2 should provide access to the IAccessibleApplication 1512*bcb85aadSSteve Yin interface via QueryService from any object so that ATs can easily determine specific 1513*bcb85aadSSteve Yin information about the application such as its name or version. 1514*bcb85aadSSteve Yin 1515*bcb85aadSSteve Yin @section _childIDs Child IDs 1516*bcb85aadSSteve Yin The IAccessible2 interfaces do not support child IDs, i.e. simple child elements. 1517*bcb85aadSSteve Yin Full accessible objects must be created for each object that supports IAccessible2. 1518*bcb85aadSSteve Yin Therefore MSAA's get_accChild should never return a child ID (other than CHILDID_SELF) 1519*bcb85aadSSteve Yin for an object that implements any of the IAccessible2 interfaces. 1520*bcb85aadSSteve Yin 1521*bcb85aadSSteve Yin Microsoft's UI Automation specification has the same limitation and this was resolved 1522*bcb85aadSSteve Yin in the UI Automation Express specification by adding IAccessibleEx::GetObjectForChild 1523*bcb85aadSSteve Yin and IAccessibleEx::GetIAccessiblePair. These methods allow mapping back and forth 1524*bcb85aadSSteve Yin between an IAccessibleEx and an {IAccessible, Child ID} pair. A future version of 1525*bcb85aadSSteve Yin IAccessible2 may include similar methods to map back and forth between an IAccessible2 1526*bcb85aadSSteve Yin and an {IAccessible, Child ID} pair. 1527*bcb85aadSSteve Yin 1528*bcb85aadSSteve Yin @section _variants VARIANTs 1529*bcb85aadSSteve Yin Some methods return a VARIANT. Implementers need to make sure that the return type is 1530*bcb85aadSSteve Yin specified, i.e. VT_I4, VT_IDISPATCH, etc. The methods that return VARIANTs are 1531*bcb85aadSSteve Yin IAccessibleHyperlink::anchor, IAccessibleHyperlink::anchorTarget, IAccessibleValue::currentValue, 1532*bcb85aadSSteve Yin IAccessibleValue::maximumValue, IAccessibleValue::minimumValue. 1533*bcb85aadSSteve Yin 1534*bcb85aadSSteve Yin @section _iaaction-iahyperlink IAccessibleHyperlink as subclass of IAccessibleAction 1535*bcb85aadSSteve Yin In this version of the IDL, IAccessibleHyperlink is a subclass of IAccessibleAction. 1536*bcb85aadSSteve Yin However, there is no practical need for that inheritance and in some cases, such as 1537*bcb85aadSSteve Yin an image map of smart tags, it doesn't make sense because such an image map doesn't 1538*bcb85aadSSteve Yin have actionable objects; it's the secondary smart tags that are actionable. As a 1539*bcb85aadSSteve Yin result, implementations should not rely on the inheritance as it may be removed in 1540*bcb85aadSSteve Yin a later version of the IDL. 1541*bcb85aadSSteve Yin 1542*bcb85aadSSteve Yin @section _trademark Trademark Attribution 1543*bcb85aadSSteve Yin The names of actual companies and products mentioned herein may be the trademarks of 1544*bcb85aadSSteve Yin their respective owners. In particular, Active Accessibility, Microsoft, MSDN, and Win32 1545*bcb85aadSSteve Yin are trademarks of the Microsoft group of companies in the U.S.A. and/or other countries. 1546*bcb85aadSSteve Yin 1547*bcb85aadSSteve Yin**/ 1548*bcb85aadSSteve Yin 1549*bcb85aadSSteve Yin 1550*bcb85aadSSteve Yin 1551*bcb85aadSSteve Yin 1552*bcb85aadSSteve Yin 1553*bcb85aadSSteve Yin 1554*bcb85aadSSteve Yin 1555*bcb85aadSSteve Yin 1556*bcb85aadSSteve Yin/** A structure defining the locale of an accessible object. 1557*bcb85aadSSteve Yin 1558*bcb85aadSSteve YinIAccessible2::locale returns this struct. 1559*bcb85aadSSteve Yin*/ 1560*bcb85aadSSteve Yintypedef struct IA2Locale { 1561*bcb85aadSSteve Yin BSTR language; ///< ISO 639-1 Alpha-2 two character language code 1562*bcb85aadSSteve Yin BSTR country; ///< ISO 3166-1 Alpha-2 two character country code 1563*bcb85aadSSteve Yin BSTR variant; ///< Application specific variant of the locale 1564*bcb85aadSSteve Yin} IA2Locale; 1565*bcb85aadSSteve Yin 1566*bcb85aadSSteve Yin/** @brief This interface exposes the primary set of information about an 1567*bcb85aadSSteve Yin IAccessible2 enabled accessible object. 1568*bcb85aadSSteve Yin 1569*bcb85aadSSteve Yin This interface must always be provided for objects that support some 1570*bcb85aadSSteve Yin portion of the collection of the %IAccessible2 interfaces. 1571*bcb85aadSSteve Yin 1572*bcb85aadSSteve Yin Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces" 1573*bcb85aadSSteve Yin for special considerations related to use of the MSAA IAccessible interface and 1574*bcb85aadSSteve Yin the set of %IAccessible2 interfaces. 1575*bcb85aadSSteve Yin */ 1576*bcb85aadSSteve Yin[object, uuid(E89F726E-C4F4-4c19-BB19-B647D7FA8478)] 1577*bcb85aadSSteve Yininterface IAccessible2 : IAccessible 1578*bcb85aadSSteve Yin{ 1579*bcb85aadSSteve Yin 1580*bcb85aadSSteve Yin /** @brief Returns the number of accessible relations for this object. 1581*bcb85aadSSteve Yin @param [out] nRelations 1582*bcb85aadSSteve Yin @retval S_OK 1583*bcb85aadSSteve Yin */ 1584*bcb85aadSSteve Yin [propget] HRESULT nRelations 1585*bcb85aadSSteve Yin ( 1586*bcb85aadSSteve Yin [out, retval] long *nRelations 1587*bcb85aadSSteve Yin ); 1588*bcb85aadSSteve Yin 1589*bcb85aadSSteve Yin /** @brief Returns one accessible relation for this object. 1590*bcb85aadSSteve Yin @param [in] relationIndex 1591*bcb85aadSSteve Yin 0 based 1592*bcb85aadSSteve Yin @param [out] relation 1593*bcb85aadSSteve Yin @retval S_OK 1594*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 1595*bcb85aadSSteve Yin */ 1596*bcb85aadSSteve Yin [propget] HRESULT relation 1597*bcb85aadSSteve Yin ( 1598*bcb85aadSSteve Yin [in] long relationIndex, 1599*bcb85aadSSteve Yin [out, retval] IAccessibleRelation **relation 1600*bcb85aadSSteve Yin ); 1601*bcb85aadSSteve Yin 1602*bcb85aadSSteve Yin /** @brief Returns multiple accessible relations for this object. 1603*bcb85aadSSteve Yin @param [in] maxRelations 1604*bcb85aadSSteve Yin maximum size of the array allocated by the client 1605*bcb85aadSSteve Yin @param [out] relations 1606*bcb85aadSSteve Yin The array of accessible relation objects. Note that this array is to be 1607*bcb85aadSSteve Yin allocated by the client and freed when no longer needed. Refer to @ref 1608*bcb85aadSSteve Yin _arrayConsideration "Special Consideration when using Arrays" for more details. 1609*bcb85aadSSteve Yin @param [out] nRelations 1610*bcb85aadSSteve Yin actual number of relations in the returned array (not more than maxRelations) 1611*bcb85aadSSteve Yin @retval S_OK 1612*bcb85aadSSteve Yin @retval S_FALSE if there are no relations, nRelations is set to 0 1613*bcb85aadSSteve Yin @note As a performant alternative, client code should consider using IAccessible2_2::relationTargetsOfType. 1614*bcb85aadSSteve Yin */ 1615*bcb85aadSSteve Yin [propget] HRESULT relations 1616*bcb85aadSSteve Yin ( 1617*bcb85aadSSteve Yin [in] long maxRelations, 1618*bcb85aadSSteve Yin [out, size_is(maxRelations), length_is(*nRelations)] 1619*bcb85aadSSteve Yin IAccessibleRelation **relations, 1620*bcb85aadSSteve Yin [out, retval] long *nRelations 1621*bcb85aadSSteve Yin ); 1622*bcb85aadSSteve Yin 1623*bcb85aadSSteve Yin /** @brief Returns the role of an %IAccessible2 object. 1624*bcb85aadSSteve Yin @param [out] role 1625*bcb85aadSSteve Yin The role of an %IAccessible2 object. 1626*bcb85aadSSteve Yin @retval S_OK 1627*bcb85aadSSteve Yin @note 1628*bcb85aadSSteve Yin @li For convenience MSAA roles are also passed through this method so the 1629*bcb85aadSSteve Yin AT doesn't have to also fetch roles through MSAA's get_accRole. 1630*bcb85aadSSteve Yin @li %IAccessible2 roles should not be passed through MSAA's get_accRole. 1631*bcb85aadSSteve Yin @li For compatibility with non IAccessible2 enabled ATs, IAccessible2 1632*bcb85aadSSteve Yin applications should also add support to get_accRole to return the closest 1633*bcb85aadSSteve Yin MSAA role or ROLE_SYSTEM_CLIENT (the MSAA defined default role) if there 1634*bcb85aadSSteve Yin is not a good match. 1635*bcb85aadSSteve Yin @li This method is missing a [propget] prefix in the IDL. The result is the 1636*bcb85aadSSteve Yin method is named role in generated C++ code instead of get_role. 1637*bcb85aadSSteve Yin */ 1638*bcb85aadSSteve Yin HRESULT role 1639*bcb85aadSSteve Yin ( 1640*bcb85aadSSteve Yin [out, retval] long *role 1641*bcb85aadSSteve Yin ); 1642*bcb85aadSSteve Yin 1643*bcb85aadSSteve Yin /** @brief Makes an object visible on the screen. 1644*bcb85aadSSteve Yin @param [in] scrollType 1645*bcb85aadSSteve Yin Defines where the object should be placed on the screen. 1646*bcb85aadSSteve Yin @retval S_OK 1647*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 1648*bcb85aadSSteve Yin */ 1649*bcb85aadSSteve Yin HRESULT scrollTo 1650*bcb85aadSSteve Yin ( 1651*bcb85aadSSteve Yin [in] enum IA2ScrollType scrollType 1652*bcb85aadSSteve Yin ); 1653*bcb85aadSSteve Yin 1654*bcb85aadSSteve Yin /** @brief Moves the top left of an object to a specified location. 1655*bcb85aadSSteve Yin 1656*bcb85aadSSteve Yin @param [in] coordinateType 1657*bcb85aadSSteve Yin Specifies whether the coordinates are relative to the screen or the parent object. 1658*bcb85aadSSteve Yin @param [in] x 1659*bcb85aadSSteve Yin Defines the x coordinate. 1660*bcb85aadSSteve Yin @param [in] y 1661*bcb85aadSSteve Yin Defines the y coordinate. 1662*bcb85aadSSteve Yin @retval S_OK 1663*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 1664*bcb85aadSSteve Yin */ 1665*bcb85aadSSteve Yin HRESULT scrollToPoint 1666*bcb85aadSSteve Yin ( 1667*bcb85aadSSteve Yin [in] enum IA2CoordinateType coordinateType, 1668*bcb85aadSSteve Yin [in] long x, 1669*bcb85aadSSteve Yin [in] long y 1670*bcb85aadSSteve Yin ); 1671*bcb85aadSSteve Yin 1672*bcb85aadSSteve Yin /** @brief Returns grouping information. 1673*bcb85aadSSteve Yin 1674*bcb85aadSSteve Yin Used for tree items, list items, tab panel labels, radio buttons, etc. 1675*bcb85aadSSteve Yin Also used for collections of non-text objects. 1676*bcb85aadSSteve Yin 1677*bcb85aadSSteve Yin @param [out] groupLevel 1678*bcb85aadSSteve Yin 1 based, 0 indicates that this value is not applicable 1679*bcb85aadSSteve Yin @param [out] similarItemsInGroup 1680*bcb85aadSSteve Yin 1 based, 0 indicates that this value is not applicable 1681*bcb85aadSSteve Yin @param [out] positionInGroup 1682*bcb85aadSSteve Yin 1 based, 0 indicates that this value is not applicable. This is an index 1683*bcb85aadSSteve Yin into the objects in the current group, not an index into all the objects 1684*bcb85aadSSteve Yin at the same group level. 1685*bcb85aadSSteve Yin @retval S_OK if at least one value is valid 1686*bcb85aadSSteve Yin @retval S_FALSE if no values are valid, [out] values are 0s 1687*bcb85aadSSteve Yin @note This method is meant to describe the nature of an object's containment 1688*bcb85aadSSteve Yin structure. It's exposed by trees, tree grids, nested lists, nested menus, 1689*bcb85aadSSteve Yin but not headings, which uses the level object attribute. It is also exposed 1690*bcb85aadSSteve Yin by radio buttons (with groupLevel == 0). 1691*bcb85aadSSteve Yin @note This is normally not implemented on a combo box to describe the nature 1692*bcb85aadSSteve Yin of its contents. Normally an AT will get that information from its child list 1693*bcb85aadSSteve Yin object. However, in some cases when non-edit combo boxes are not able to be structured 1694*bcb85aadSSteve Yin such that the list is a child of the combo box, this method is implemented on 1695*bcb85aadSSteve Yin the combo box itself. ATs can use this interface if a child list is not found. 1696*bcb85aadSSteve Yin */ 1697*bcb85aadSSteve Yin [propget] HRESULT groupPosition 1698*bcb85aadSSteve Yin ( 1699*bcb85aadSSteve Yin [out] long *groupLevel, 1700*bcb85aadSSteve Yin [out] long *similarItemsInGroup, 1701*bcb85aadSSteve Yin [out, retval] long *positionInGroup 1702*bcb85aadSSteve Yin ); 1703*bcb85aadSSteve Yin 1704*bcb85aadSSteve Yin /** @brief Returns the bit strip containing any IAccessible2 states. 1705*bcb85aadSSteve Yin 1706*bcb85aadSSteve Yin The IAccessible2 states are in addition to the MSAA states and are defined in 1707*bcb85aadSSteve Yin the IA2States enum. 1708*bcb85aadSSteve Yin 1709*bcb85aadSSteve Yin @param [out] states 1710*bcb85aadSSteve Yin @retval S_OK 1711*bcb85aadSSteve Yin */ 1712*bcb85aadSSteve Yin [propget] HRESULT states 1713*bcb85aadSSteve Yin ( 1714*bcb85aadSSteve Yin [out, retval] AccessibleStates *states 1715*bcb85aadSSteve Yin ); 1716*bcb85aadSSteve Yin 1717*bcb85aadSSteve Yin /** @brief Returns the extended role. 1718*bcb85aadSSteve Yin 1719*bcb85aadSSteve Yin An extended role is a role which is dynamically generated by the application. 1720*bcb85aadSSteve Yin It is not predefined by the %IAccessible2 specification. 1721*bcb85aadSSteve Yin 1722*bcb85aadSSteve Yin @param [out] extendedRole 1723*bcb85aadSSteve Yin @retval S_OK 1724*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 1725*bcb85aadSSteve Yin */ 1726*bcb85aadSSteve Yin [propget] HRESULT extendedRole 1727*bcb85aadSSteve Yin ( 1728*bcb85aadSSteve Yin [out, retval] BSTR *extendedRole 1729*bcb85aadSSteve Yin ); 1730*bcb85aadSSteve Yin 1731*bcb85aadSSteve Yin /** @brief Returns the localized extended role. 1732*bcb85aadSSteve Yin @param [out] localizedExtendedRole 1733*bcb85aadSSteve Yin @retval S_OK 1734*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 1735*bcb85aadSSteve Yin */ 1736*bcb85aadSSteve Yin [propget] HRESULT localizedExtendedRole 1737*bcb85aadSSteve Yin ( 1738*bcb85aadSSteve Yin [out, retval] BSTR *localizedExtendedRole 1739*bcb85aadSSteve Yin ); 1740*bcb85aadSSteve Yin 1741*bcb85aadSSteve Yin /** @brief Returns the number of extended states. 1742*bcb85aadSSteve Yin @param [out] nExtendedStates 1743*bcb85aadSSteve Yin @retval S_OK 1744*bcb85aadSSteve Yin */ 1745*bcb85aadSSteve Yin [propget] HRESULT nExtendedStates 1746*bcb85aadSSteve Yin ( 1747*bcb85aadSSteve Yin [out, retval] long *nExtendedStates 1748*bcb85aadSSteve Yin ); 1749*bcb85aadSSteve Yin 1750*bcb85aadSSteve Yin /** @brief Returns the extended states (array of strings). 1751*bcb85aadSSteve Yin 1752*bcb85aadSSteve Yin An extended state is a state which is dynamically generated by the application. 1753*bcb85aadSSteve Yin It is not predefined by the %IAccessible2 specification. 1754*bcb85aadSSteve Yin 1755*bcb85aadSSteve Yin @param [in] maxExtendedStates 1756*bcb85aadSSteve Yin This parameter is ignored. Refer to @ref _arrayConsideration 1757*bcb85aadSSteve Yin "Special Consideration when using Arrays" for more details. 1758*bcb85aadSSteve Yin @param [out] extendedStates 1759*bcb85aadSSteve Yin This array is allocated by the server. The client must free it with CoTaskMemFree. 1760*bcb85aadSSteve Yin @param [out] nExtendedStates 1761*bcb85aadSSteve Yin The number of extended states returned; the size of the returned array. 1762*bcb85aadSSteve Yin @retval S_OK 1763*bcb85aadSSteve Yin @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively 1764*bcb85aadSSteve Yin */ 1765*bcb85aadSSteve Yin [propget] HRESULT extendedStates 1766*bcb85aadSSteve Yin ( 1767*bcb85aadSSteve Yin [in] long maxExtendedStates, 1768*bcb85aadSSteve Yin [out, size_is(,maxExtendedStates), length_is(,*nExtendedStates)] BSTR **extendedStates, 1769*bcb85aadSSteve Yin [out, retval] long *nExtendedStates 1770*bcb85aadSSteve Yin ); 1771*bcb85aadSSteve Yin 1772*bcb85aadSSteve Yin /** @brief Returns the localized extended states (array of strings). 1773*bcb85aadSSteve Yin 1774*bcb85aadSSteve Yin @param [in] maxLocalizedExtendedStates 1775*bcb85aadSSteve Yin This parameter is ignored. Refer to @ref _arrayConsideration 1776*bcb85aadSSteve Yin "Special Consideration when using Arrays" for more details. 1777*bcb85aadSSteve Yin @param [out] localizedExtendedStates 1778*bcb85aadSSteve Yin This array is allocated by the server. The client must free it with CoTaskMemFree. 1779*bcb85aadSSteve Yin @param [out] nLocalizedExtendedStates 1780*bcb85aadSSteve Yin The number of localized extended states returned; the size of the returned array. 1781*bcb85aadSSteve Yin @retval S_OK 1782*bcb85aadSSteve Yin @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively 1783*bcb85aadSSteve Yin */ 1784*bcb85aadSSteve Yin [propget] HRESULT localizedExtendedStates 1785*bcb85aadSSteve Yin ( 1786*bcb85aadSSteve Yin [in] long maxLocalizedExtendedStates, 1787*bcb85aadSSteve Yin [out, size_is(,maxLocalizedExtendedStates), length_is(,*nLocalizedExtendedStates)] BSTR **localizedExtendedStates, 1788*bcb85aadSSteve Yin [out, retval] long *nLocalizedExtendedStates 1789*bcb85aadSSteve Yin ); 1790*bcb85aadSSteve Yin 1791*bcb85aadSSteve Yin /** @brief Returns the unique ID. 1792*bcb85aadSSteve Yin 1793*bcb85aadSSteve Yin The uniqueID is an identifier for this object, is unique within the 1794*bcb85aadSSteve Yin current window, and remains the same for the lifetime of the accessible 1795*bcb85aadSSteve Yin object. 1796*bcb85aadSSteve Yin 1797*bcb85aadSSteve Yin The uniqueID is not related to: 1798*bcb85aadSSteve Yin - the MSAA objectID which is used by the server to disambiguate between 1799*bcb85aadSSteve Yin IAccessibles per HWND or 1800*bcb85aadSSteve Yin - the MSAA childID which is used to disambiguate between children being 1801*bcb85aadSSteve Yin managed by an IAccessible. 1802*bcb85aadSSteve Yin 1803*bcb85aadSSteve Yin This value is provided so the AT can have access to a unique runtime persistent 1804*bcb85aadSSteve Yin identifier even when not handling an event for the object. 1805*bcb85aadSSteve Yin 1806*bcb85aadSSteve Yin An example of when this value is useful is if the AT wants to build a cache. 1807*bcb85aadSSteve Yin The AT could cache the uniqueIDs in addition to other data being cached. 1808*bcb85aadSSteve Yin When an event is fired the AT could map the uniqueID to its internal model. 1809*bcb85aadSSteve Yin Thus, if there's a REORDER/SHOW/HIDE event the AT knows which part of the 1810*bcb85aadSSteve Yin internal structure has been invalidated and can refetch just that part. 1811*bcb85aadSSteve Yin 1812*bcb85aadSSteve Yin This value can also be used by an AT to determine when the current control 1813*bcb85aadSSteve Yin has changed. If the role is the same for two controls that are adjacent in 1814*bcb85aadSSteve Yin the tab order, this can be used to detect the new control. 1815*bcb85aadSSteve Yin 1816*bcb85aadSSteve Yin Another use of this value by an AT is to identify when a grouping object has 1817*bcb85aadSSteve Yin changed, e.g. when moving from a radio button in one group to a radio button in a 1818*bcb85aadSSteve Yin different group. 1819*bcb85aadSSteve Yin 1820*bcb85aadSSteve Yin One means of implementing this would be to create a factory with a 32 bit number 1821*bcb85aadSSteve Yin generator and a reuse pool. The number generator would emit numbers starting 1822*bcb85aadSSteve Yin at 1. Each time an object's life cycle ended, its number would be saved into a 1823*bcb85aadSSteve Yin reuse pool. The number generator would be used whenever the reuse pool was empty. 1824*bcb85aadSSteve Yin 1825*bcb85aadSSteve Yin Another way to create a unique ID is to generate it from a pointer value, e.g. an 1826*bcb85aadSSteve Yin object's address. That would be unique because no two active objects can use the 1827*bcb85aadSSteve Yin same allocated memory space. 1828*bcb85aadSSteve Yin 1829*bcb85aadSSteve Yin @param [out] uniqueID 1830*bcb85aadSSteve Yin @retval S_OK 1831*bcb85aadSSteve Yin */ 1832*bcb85aadSSteve Yin [propget] HRESULT uniqueID 1833*bcb85aadSSteve Yin ( 1834*bcb85aadSSteve Yin [out, retval] long *uniqueID 1835*bcb85aadSSteve Yin ); 1836*bcb85aadSSteve Yin 1837*bcb85aadSSteve Yin /** @brief Returns the window handle for the parent window which contains this object. 1838*bcb85aadSSteve Yin 1839*bcb85aadSSteve Yin This is the same window handle which will be passed for any events that occur on the 1840*bcb85aadSSteve Yin object, but is cached in the accessible object for use when it would be helpful to 1841*bcb85aadSSteve Yin access the window handle in cases where an event isn't fired on this object. 1842*bcb85aadSSteve Yin 1843*bcb85aadSSteve Yin A use case is when a screen reader is grabbing an entire web page on a page load. 1844*bcb85aadSSteve Yin Without the availability of windowHandle, the AT would have to get the window handle 1845*bcb85aadSSteve Yin by using WindowFromAccessibleObject on each IAccessible, which is slow because it's 1846*bcb85aadSSteve Yin implemented by oleacc.dll as a loop which crawls up the ancestor chain and looks for 1847*bcb85aadSSteve Yin a ROLE_WINDOW object, mapping that back to a window handle. 1848*bcb85aadSSteve Yin 1849*bcb85aadSSteve Yin @param [out] windowHandle 1850*bcb85aadSSteve Yin @retval S_OK 1851*bcb85aadSSteve Yin */ 1852*bcb85aadSSteve Yin [propget] HRESULT windowHandle 1853*bcb85aadSSteve Yin ( 1854*bcb85aadSSteve Yin [out, retval] HWND *windowHandle 1855*bcb85aadSSteve Yin ); 1856*bcb85aadSSteve Yin 1857*bcb85aadSSteve Yin /** @brief Returns the index of this object in its parent object. 1858*bcb85aadSSteve Yin @param [out] indexInParent 1859*bcb85aadSSteve Yin 0 based; -1 indicates there is no parent; the upper bound is the value 1860*bcb85aadSSteve Yin returned by the parent's IAccessible::get_accChildCount. 1861*bcb85aadSSteve Yin @retval S_OK 1862*bcb85aadSSteve Yin @retval S_FALSE if no parent, [out] value is -1 1863*bcb85aadSSteve Yin */ 1864*bcb85aadSSteve Yin [propget] HRESULT indexInParent 1865*bcb85aadSSteve Yin ( 1866*bcb85aadSSteve Yin [out, retval] long *indexInParent 1867*bcb85aadSSteve Yin ); 1868*bcb85aadSSteve Yin 1869*bcb85aadSSteve Yin /** @brief Returns the IA2Locale of the accessible object. 1870*bcb85aadSSteve Yin @param [out] locale 1871*bcb85aadSSteve Yin @retval S_OK 1872*bcb85aadSSteve Yin */ 1873*bcb85aadSSteve Yin [propget] HRESULT locale 1874*bcb85aadSSteve Yin ( 1875*bcb85aadSSteve Yin [out, retval] IA2Locale *locale 1876*bcb85aadSSteve Yin ); 1877*bcb85aadSSteve Yin 1878*bcb85aadSSteve Yin /** @brief Returns the attributes specific to this object, such as a cell's formula. 1879*bcb85aadSSteve Yin @param [out] attributes 1880*bcb85aadSSteve Yin @retval S_OK 1881*bcb85aadSSteve Yin @retval S_FALSE returned if there is nothing to return, [out] value is NULL 1882*bcb85aadSSteve Yin */ 1883*bcb85aadSSteve Yin [propget] HRESULT attributes 1884*bcb85aadSSteve Yin ( 1885*bcb85aadSSteve Yin [out, retval] BSTR *attributes 1886*bcb85aadSSteve Yin ); 1887*bcb85aadSSteve Yin 1888*bcb85aadSSteve Yin} 1889*bcb85aadSSteve Yin 1890*bcb85aadSSteve Yin/************************************************************************* 1891*bcb85aadSSteve Yin * 1892*bcb85aadSSteve Yin * File Name (Accessible2_2.idl) 1893*bcb85aadSSteve Yin * 1894*bcb85aadSSteve Yin * IAccessible2 IDL Specification 1895*bcb85aadSSteve Yin * 1896*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 1897*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 1898*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 1899*bcb85aadSSteve Yin * All rights reserved. 1900*bcb85aadSSteve Yin * 1901*bcb85aadSSteve Yin * 1902*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 1903*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 1904*bcb85aadSSteve Yin * are met: 1905*bcb85aadSSteve Yin * 1906*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 1907*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 1908*bcb85aadSSteve Yin * 1909*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 1910*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 1911*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 1912*bcb85aadSSteve Yin * provided with the distribution. 1913*bcb85aadSSteve Yin * 1914*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 1915*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 1916*bcb85aadSSteve Yin * derived from this software without specific prior written 1917*bcb85aadSSteve Yin * permission. 1918*bcb85aadSSteve Yin * 1919*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 1920*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 1921*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1922*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1923*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 1924*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1925*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1926*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 1927*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1928*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1929*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 1930*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 1931*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1932*bcb85aadSSteve Yin * 1933*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 1934*bcb85aadSSteve Yin * BSD License" as published at: 1935*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 1936*bcb85aadSSteve Yin * 1937*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 1938*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 1939*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 1940*bcb85aadSSteve Yin * 1941*bcb85aadSSteve Yin ************************************************************************/ 1942*bcb85aadSSteve Yin 1943*bcb85aadSSteve Yin 1944*bcb85aadSSteve Yin 1945*bcb85aadSSteve Yin 1946*bcb85aadSSteve Yin 1947*bcb85aadSSteve Yin 1948*bcb85aadSSteve Yin/** @brief This interface exposes the primary set of information about an 1949*bcb85aadSSteve Yin IAccessible2 enabled accessible object. 1950*bcb85aadSSteve Yin 1951*bcb85aadSSteve Yin This interface must always be provided for objects that support some 1952*bcb85aadSSteve Yin portion of the collection of the %IAccessible2 interfaces. 1953*bcb85aadSSteve Yin 1954*bcb85aadSSteve Yin Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces" 1955*bcb85aadSSteve Yin for special considerations related to use of the MSAA IAccessible interface and 1956*bcb85aadSSteve Yin the set of %IAccessible2 interfaces. 1957*bcb85aadSSteve Yin */ 1958*bcb85aadSSteve Yin[object, uuid(6C9430E9-299D-4E6F-BD01-A82A1E88D3FF)] 1959*bcb85aadSSteve Yininterface IAccessible2_2 : IAccessible2 1960*bcb85aadSSteve Yin{ 1961*bcb85aadSSteve Yin /** @brief Returns the attribute value of a specified attribute specific to this object. 1962*bcb85aadSSteve Yin @param [in] name 1963*bcb85aadSSteve Yin @param [out] attribute 1964*bcb85aadSSteve Yin @retval S_OK 1965*bcb85aadSSteve Yin @retval S_FALSE returned if there is nothing to return, [out] value is NULL. 1966*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed. 1967*bcb85aadSSteve Yin @note The output value is a VARIANT. Typically it will be a VT_BSTR, but there 1968*bcb85aadSSteve Yin are some cases where it will be a VT_I4 or VT_BOOL. Refer to the <a href= 1969*bcb85aadSSteve Yin "http://www.linuxfoundation.org/collaborate/workgroups/accessibility/iaccessible2/objectattributesIAccessible2"> 1970*bcb85aadSSteve Yin Object Attributes specification</a> for more information. 1971*bcb85aadSSteve Yin */ 1972*bcb85aadSSteve Yin [propget] HRESULT attribute 1973*bcb85aadSSteve Yin ( 1974*bcb85aadSSteve Yin [in] BSTR name, 1975*bcb85aadSSteve Yin [out, retval] VARIANT *attribute 1976*bcb85aadSSteve Yin ); 1977*bcb85aadSSteve Yin 1978*bcb85aadSSteve Yin /** @brief Returns the deepest hypertext accessible in the subtree of this object, and the caret offset within it. 1979*bcb85aadSSteve Yin @param [out] accessible 1980*bcb85aadSSteve Yin @param [out] caretOffset 1981*bcb85aadSSteve Yin @retval S_OK 1982*bcb85aadSSteve Yin @retval S_FALSE returned if there is no caret in any of the objects in the subtree, [out] accessible is NULL and [out] caretOffset is -1. 1983*bcb85aadSSteve Yin */ 1984*bcb85aadSSteve Yin [propget] HRESULT accessibleWithCaret 1985*bcb85aadSSteve Yin ( 1986*bcb85aadSSteve Yin [out] IUnknown **accessible, 1987*bcb85aadSSteve Yin [out, retval] long *caretOffset 1988*bcb85aadSSteve Yin ); 1989*bcb85aadSSteve Yin 1990*bcb85aadSSteve Yin /** @brief Returns relation targets for a specified target type. 1991*bcb85aadSSteve Yin @param [in] type 1992*bcb85aadSSteve Yin The requested @ref grpRelations "relation type". 1993*bcb85aadSSteve Yin @param [in] maxTargets 1994*bcb85aadSSteve Yin The number of targets requested. 0 indicates that all targets should be returned. 1995*bcb85aadSSteve Yin @param [out] targets 1996*bcb85aadSSteve Yin This array is allocated by the server. The client must free it with CoTaskMemFree. 1997*bcb85aadSSteve Yin @param [out] nTargets 1998*bcb85aadSSteve Yin The number of targets returned; the size of the returned array. 1999*bcb85aadSSteve Yin @retval S_OK 2000*bcb85aadSSteve Yin @retval S_FALSE if there are no targets, [out] values are NULL and 0 respectively. 2001*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed. 2002*bcb85aadSSteve Yin */ 2003*bcb85aadSSteve Yin [propget] HRESULT relationTargetsOfType 2004*bcb85aadSSteve Yin ( 2005*bcb85aadSSteve Yin [in] BSTR type, 2006*bcb85aadSSteve Yin [in] long maxTargets, 2007*bcb85aadSSteve Yin [out, size_is(,*nTargets)] IUnknown ***targets, 2008*bcb85aadSSteve Yin [out, retval] long *nTargets 2009*bcb85aadSSteve Yin ); 2010*bcb85aadSSteve Yin 2011*bcb85aadSSteve Yin} 2012*bcb85aadSSteve Yin 2013*bcb85aadSSteve Yin/************************************************************************* 2014*bcb85aadSSteve Yin * 2015*bcb85aadSSteve Yin * File Name (AccessibleComponent.idl) 2016*bcb85aadSSteve Yin * 2017*bcb85aadSSteve Yin * IAccessible2 IDL Specification 2018*bcb85aadSSteve Yin * 2019*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 2020*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 2021*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 2022*bcb85aadSSteve Yin * All rights reserved. 2023*bcb85aadSSteve Yin * 2024*bcb85aadSSteve Yin * 2025*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 2026*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 2027*bcb85aadSSteve Yin * are met: 2028*bcb85aadSSteve Yin * 2029*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 2030*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 2031*bcb85aadSSteve Yin * 2032*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 2033*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 2034*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 2035*bcb85aadSSteve Yin * provided with the distribution. 2036*bcb85aadSSteve Yin * 2037*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 2038*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 2039*bcb85aadSSteve Yin * derived from this software without specific prior written 2040*bcb85aadSSteve Yin * permission. 2041*bcb85aadSSteve Yin * 2042*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 2043*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 2044*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 2045*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2046*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 2047*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2048*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2049*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 2050*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2051*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2052*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2053*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 2054*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2055*bcb85aadSSteve Yin * 2056*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 2057*bcb85aadSSteve Yin * BSD License" as published at: 2058*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 2059*bcb85aadSSteve Yin * 2060*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 2061*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 2062*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 2063*bcb85aadSSteve Yin * 2064*bcb85aadSSteve Yin ************************************************************************/ 2065*bcb85aadSSteve Yin 2066*bcb85aadSSteve Yin 2067*bcb85aadSSteve Yin 2068*bcb85aadSSteve Yin 2069*bcb85aadSSteve Yin 2070*bcb85aadSSteve Yin/** A value specifying a color in ARGB format, where each 8 bit color component 2071*bcb85aadSSteve Yinspecifies alpha, red, green, and blue respectively. The alpha value is optional. 2072*bcb85aadSSteve Yin*/ 2073*bcb85aadSSteve Yintypedef long IA2Color; 2074*bcb85aadSSteve Yin 2075*bcb85aadSSteve Yin/** @brief This interface is implemented by any object that can be rendered 2076*bcb85aadSSteve Yin on the screen. 2077*bcb85aadSSteve Yin 2078*bcb85aadSSteve Yin This interface provides the standard mechanism for an assistive technology 2079*bcb85aadSSteve Yin to retrieve information concerning the graphical representation of an object. 2080*bcb85aadSSteve Yin Coordinates used by the functions of this interface are specified in 2081*bcb85aadSSteve Yin different coordinate systems. Their scale is the same and is equal to 2082*bcb85aadSSteve Yin that of the screen coordinate system. In other words all coordinates 2083*bcb85aadSSteve Yin are measured in pixels. They differ in their respective origin: 2084*bcb85aadSSteve Yin <ul> 2085*bcb85aadSSteve Yin <li>The screen coordinate system has its origin in the upper left 2086*bcb85aadSSteve Yin corner of the current screen.</li> 2087*bcb85aadSSteve Yin <li>The origin of the parent coordinate system is the upper left corner 2088*bcb85aadSSteve Yin of the parent's bounding box. With no parent the screen coordinate 2089*bcb85aadSSteve Yin system is used instead.</li> 2090*bcb85aadSSteve Yin </ul> 2091*bcb85aadSSteve Yin*/ 2092*bcb85aadSSteve Yin[object, uuid(1546D4B0-4C98-4bda-89AE-9A64748BDDE4)] 2093*bcb85aadSSteve Yininterface IAccessibleComponent : IUnknown 2094*bcb85aadSSteve Yin{ 2095*bcb85aadSSteve Yin 2096*bcb85aadSSteve Yin /** @brief Returns the location of the upper left corner of the object's 2097*bcb85aadSSteve Yin bounding box relative to the immediate parent object. 2098*bcb85aadSSteve Yin 2099*bcb85aadSSteve Yin The coordinates of the bounding box are given relative to the parent's 2100*bcb85aadSSteve Yin coordinate system. The coordinates of the returned position are relative 2101*bcb85aadSSteve Yin to this object's parent or relative to the screen on which this object 2102*bcb85aadSSteve Yin is rendered if it has no parent. If the object is not on any screen 2103*bcb85aadSSteve Yin the returned position is (0,0). 2104*bcb85aadSSteve Yin 2105*bcb85aadSSteve Yin @param [out] x 2106*bcb85aadSSteve Yin @param [out] y 2107*bcb85aadSSteve Yin @retval S_OK 2108*bcb85aadSSteve Yin */ 2109*bcb85aadSSteve Yin [propget] HRESULT locationInParent 2110*bcb85aadSSteve Yin ( 2111*bcb85aadSSteve Yin [out] long *x, 2112*bcb85aadSSteve Yin [out, retval] long *y 2113*bcb85aadSSteve Yin ); 2114*bcb85aadSSteve Yin 2115*bcb85aadSSteve Yin /** @brief Returns the foreground color of this object. 2116*bcb85aadSSteve Yin @param [out] foreground 2117*bcb85aadSSteve Yin The returned color is the foreground color of this object or, if 2118*bcb85aadSSteve Yin that is not supported, the default foreground color. 2119*bcb85aadSSteve Yin @retval S_OK 2120*bcb85aadSSteve Yin */ 2121*bcb85aadSSteve Yin [propget] HRESULT foreground 2122*bcb85aadSSteve Yin ( 2123*bcb85aadSSteve Yin [out, retval] IA2Color *foreground 2124*bcb85aadSSteve Yin ); 2125*bcb85aadSSteve Yin 2126*bcb85aadSSteve Yin /** @brief Returns the background color of this object. 2127*bcb85aadSSteve Yin @param [out] background 2128*bcb85aadSSteve Yin The returned color is the background color of this object or, if 2129*bcb85aadSSteve Yin that is not supported, the default background color. 2130*bcb85aadSSteve Yin @retval S_OK 2131*bcb85aadSSteve Yin */ 2132*bcb85aadSSteve Yin [propget] HRESULT background 2133*bcb85aadSSteve Yin ( 2134*bcb85aadSSteve Yin [out, retval] IA2Color *background 2135*bcb85aadSSteve Yin ); 2136*bcb85aadSSteve Yin} 2137*bcb85aadSSteve Yin/************************************************************************* 2138*bcb85aadSSteve Yin * 2139*bcb85aadSSteve Yin * File Name (AccessibleValue.idl) 2140*bcb85aadSSteve Yin * 2141*bcb85aadSSteve Yin * IAccessible2 IDL Specification 2142*bcb85aadSSteve Yin * 2143*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 2144*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 2145*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 2146*bcb85aadSSteve Yin * All rights reserved. 2147*bcb85aadSSteve Yin * 2148*bcb85aadSSteve Yin * 2149*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 2150*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 2151*bcb85aadSSteve Yin * are met: 2152*bcb85aadSSteve Yin * 2153*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 2154*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 2155*bcb85aadSSteve Yin * 2156*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 2157*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 2158*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 2159*bcb85aadSSteve Yin * provided with the distribution. 2160*bcb85aadSSteve Yin * 2161*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 2162*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 2163*bcb85aadSSteve Yin * derived from this software without specific prior written 2164*bcb85aadSSteve Yin * permission. 2165*bcb85aadSSteve Yin * 2166*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 2167*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 2168*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 2169*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2170*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 2171*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2172*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2173*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 2174*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2175*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2176*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2177*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 2178*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2179*bcb85aadSSteve Yin * 2180*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 2181*bcb85aadSSteve Yin * BSD License" as published at: 2182*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 2183*bcb85aadSSteve Yin * 2184*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 2185*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 2186*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 2187*bcb85aadSSteve Yin * 2188*bcb85aadSSteve Yin ************************************************************************/ 2189*bcb85aadSSteve Yin 2190*bcb85aadSSteve Yin 2191*bcb85aadSSteve Yin 2192*bcb85aadSSteve Yin 2193*bcb85aadSSteve Yin 2194*bcb85aadSSteve Yin/** @brief This interface gives access to a single numerical value. 2195*bcb85aadSSteve Yin 2196*bcb85aadSSteve Yin The %IAccessibleValue interface represents a single numerical value and should 2197*bcb85aadSSteve Yin be implemented by any class that supports numerical value like progress bars 2198*bcb85aadSSteve Yin and spin boxes. This interface lets you access the value and its upper and 2199*bcb85aadSSteve Yin lower bounds. 2200*bcb85aadSSteve Yin*/ 2201*bcb85aadSSteve Yin[object, uuid(35855B5B-C566-4fd0-A7B1-E65465600394)] 2202*bcb85aadSSteve Yininterface IAccessibleValue : IUnknown 2203*bcb85aadSSteve Yin{ 2204*bcb85aadSSteve Yin 2205*bcb85aadSSteve Yin /** @brief Returns the value of this object as a number. 2206*bcb85aadSSteve Yin 2207*bcb85aadSSteve Yin The exact return type is implementation dependent. Typical types are long and 2208*bcb85aadSSteve Yin double. 2209*bcb85aadSSteve Yin @param [out] currentValue 2210*bcb85aadSSteve Yin Returns the current value represented by this object. See the section about 2211*bcb85aadSSteve Yin @ref _variants "VARIANTs" for additional information. 2212*bcb85aadSSteve Yin @retval S_OK 2213*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY 2214*bcb85aadSSteve Yin */ 2215*bcb85aadSSteve Yin [propget] HRESULT currentValue 2216*bcb85aadSSteve Yin ( 2217*bcb85aadSSteve Yin [out, retval] VARIANT *currentValue 2218*bcb85aadSSteve Yin ); 2219*bcb85aadSSteve Yin 2220*bcb85aadSSteve Yin /** @brief Sets the value of this object to the given number. 2221*bcb85aadSSteve Yin 2222*bcb85aadSSteve Yin The argument is clipped to the valid interval whose upper and lower 2223*bcb85aadSSteve Yin bounds are returned by the methods IAccessibleValue::maximumValue and 2224*bcb85aadSSteve Yin IAccessibleValue::minimumValue, i.e. if it is lower than the minimum 2225*bcb85aadSSteve Yin value the new value will be the minimum and if it is greater than the 2226*bcb85aadSSteve Yin maximum then the new value will be the maximum. 2227*bcb85aadSSteve Yin 2228*bcb85aadSSteve Yin @param [in] value 2229*bcb85aadSSteve Yin The new value represented by this object. The set of admissible types for 2230*bcb85aadSSteve Yin this argument is implementation dependent. 2231*bcb85aadSSteve Yin @retval S_OK 2232*bcb85aadSSteve Yin */ 2233*bcb85aadSSteve Yin HRESULT setCurrentValue 2234*bcb85aadSSteve Yin ( 2235*bcb85aadSSteve Yin [in] VARIANT value 2236*bcb85aadSSteve Yin ); 2237*bcb85aadSSteve Yin 2238*bcb85aadSSteve Yin /** @brief Returns the maximal value that can be represented by this object. 2239*bcb85aadSSteve Yin 2240*bcb85aadSSteve Yin The type of the returned value is implementation dependent. It does not have 2241*bcb85aadSSteve Yin to be the same type as that returned by method IAccessibleValue::currentValue. 2242*bcb85aadSSteve Yin 2243*bcb85aadSSteve Yin @param [out] maximumValue 2244*bcb85aadSSteve Yin Returns the maximal value in an implementation dependent type. If this object 2245*bcb85aadSSteve Yin has no upper bound then an empty object is returned. See the section about 2246*bcb85aadSSteve Yin @ref _variants "VARIANTs" for additional information. 2247*bcb85aadSSteve Yin @retval S_OK 2248*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY 2249*bcb85aadSSteve Yin */ 2250*bcb85aadSSteve Yin [propget] HRESULT maximumValue 2251*bcb85aadSSteve Yin ( 2252*bcb85aadSSteve Yin [out, retval] VARIANT *maximumValue 2253*bcb85aadSSteve Yin ); 2254*bcb85aadSSteve Yin 2255*bcb85aadSSteve Yin /** @brief Returns the minimal value that can be represented by this object. 2256*bcb85aadSSteve Yin 2257*bcb85aadSSteve Yin The type of the returned value is implementation dependent. It does not have 2258*bcb85aadSSteve Yin to be the same type as that returned by method IAccessibleValue::currentValue. 2259*bcb85aadSSteve Yin 2260*bcb85aadSSteve Yin @param [out] minimumValue 2261*bcb85aadSSteve Yin Returns the minimal value in an implementation dependent type. If this object 2262*bcb85aadSSteve Yin has no lower bound then an empty object is returned. See the section about 2263*bcb85aadSSteve Yin @ref _variants "VARIANTs" for additional information. 2264*bcb85aadSSteve Yin @retval S_OK 2265*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY 2266*bcb85aadSSteve Yin */ 2267*bcb85aadSSteve Yin [propget] HRESULT minimumValue 2268*bcb85aadSSteve Yin ( 2269*bcb85aadSSteve Yin [out, retval] VARIANT *minimumValue 2270*bcb85aadSSteve Yin ); 2271*bcb85aadSSteve Yin 2272*bcb85aadSSteve Yin}; 2273*bcb85aadSSteve Yin/************************************************************************* 2274*bcb85aadSSteve Yin * 2275*bcb85aadSSteve Yin * File Name (AccessibleText.idl) 2276*bcb85aadSSteve Yin * 2277*bcb85aadSSteve Yin * IAccessible2 IDL Specification 2278*bcb85aadSSteve Yin * 2279*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 2280*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 2281*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 2282*bcb85aadSSteve Yin * All rights reserved. 2283*bcb85aadSSteve Yin * 2284*bcb85aadSSteve Yin * 2285*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 2286*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 2287*bcb85aadSSteve Yin * are met: 2288*bcb85aadSSteve Yin * 2289*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 2290*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 2291*bcb85aadSSteve Yin * 2292*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 2293*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 2294*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 2295*bcb85aadSSteve Yin * provided with the distribution. 2296*bcb85aadSSteve Yin * 2297*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 2298*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 2299*bcb85aadSSteve Yin * derived from this software without specific prior written 2300*bcb85aadSSteve Yin * permission. 2301*bcb85aadSSteve Yin * 2302*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 2303*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 2304*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 2305*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2306*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 2307*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2308*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2309*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 2310*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2311*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2312*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2313*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 2314*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2315*bcb85aadSSteve Yin * 2316*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 2317*bcb85aadSSteve Yin * BSD License" as published at: 2318*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 2319*bcb85aadSSteve Yin * 2320*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 2321*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 2322*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 2323*bcb85aadSSteve Yin * 2324*bcb85aadSSteve Yin ************************************************************************/ 2325*bcb85aadSSteve Yin 2326*bcb85aadSSteve Yin 2327*bcb85aadSSteve Yin 2328*bcb85aadSSteve Yin 2329*bcb85aadSSteve Yin 2330*bcb85aadSSteve Yin 2331*bcb85aadSSteve Yin/** A structure containing a substring and the start and end offsets in the enclosing string. 2332*bcb85aadSSteve Yin 2333*bcb85aadSSteve Yin IAccessibleText::newText and IAccessibleText::oldText return this struct. 2334*bcb85aadSSteve Yin*/ 2335*bcb85aadSSteve Yintypedef struct IA2TextSegment { 2336*bcb85aadSSteve Yin BSTR text; ///< A copy of a segment of text taken from an enclosing paragraph. 2337*bcb85aadSSteve Yin long start; ///< Index of the first character of the segment in the enclosing text. 2338*bcb85aadSSteve Yin long end; ///< Index of the character following the last character of the segment in the enclosing text. 2339*bcb85aadSSteve Yin} IA2TextSegment; 2340*bcb85aadSSteve Yin 2341*bcb85aadSSteve Yin/** This enum defines values which specify a text boundary type. 2342*bcb85aadSSteve Yin 2343*bcb85aadSSteve Yin IA2_TEXT_BOUNDARY_SENTENCE is optional. When a method doesn't implement this 2344*bcb85aadSSteve Yin method it must return S_FALSE. Typically this feature would not be implemented 2345*bcb85aadSSteve Yin by an application. However, if the application developer was not satisfied with 2346*bcb85aadSSteve Yin how screen readers have handled the reading of sentences this boundary type 2347*bcb85aadSSteve Yin could be implemented and screen readers could use the application's version of a 2348*bcb85aadSSteve Yin sentence rather than the screen reader's. 2349*bcb85aadSSteve Yin 2350*bcb85aadSSteve Yin The rest of the boundary types must be supported. 2351*bcb85aadSSteve Yin 2352*bcb85aadSSteve Yin This enum is used in IAccessibleText::textBeforeOffset, IAccessibleText::textAtOffset, 2353*bcb85aadSSteve Yin and IAccessibleText::textAfterOffset. 2354*bcb85aadSSteve Yin*/ 2355*bcb85aadSSteve Yin 2356*bcb85aadSSteve Yinenum IA2TextBoundaryType { 2357*bcb85aadSSteve Yin IA2_TEXT_BOUNDARY_CHAR, /**< Typically, a single character is returned. In some cases more than 2358*bcb85aadSSteve Yin one character is returned, for example, when a document contains field 2359*bcb85aadSSteve Yin data such as a field containing a date, time, or footnote reference. 2360*bcb85aadSSteve Yin In this case the caret can move over several characters in one movement 2361*bcb85aadSSteve Yin of the caret. Note that after the caret moves, the caret offset changes 2362*bcb85aadSSteve Yin by the number of characters in the field, e.g. by 8 characters in the 2363*bcb85aadSSteve Yin following date: 03/26/07. */ 2364*bcb85aadSSteve Yin IA2_TEXT_BOUNDARY_WORD, /**< The range provided matches the range observed when the application 2365*bcb85aadSSteve Yin processes the Ctrl + left arrow and Ctrl + right arrow key sequences. 2366*bcb85aadSSteve Yin Typically this is from the start of one word to the start of the next, but 2367*bcb85aadSSteve Yin various applications are inconsistent in the handling of the end of a line. */ 2368*bcb85aadSSteve Yin IA2_TEXT_BOUNDARY_SENTENCE, ///< Range is from start of one sentence to the start of another sentence. 2369*bcb85aadSSteve Yin IA2_TEXT_BOUNDARY_PARAGRAPH, ///< Range is from start of one paragraph to the start of another paragraph. 2370*bcb85aadSSteve Yin IA2_TEXT_BOUNDARY_LINE, /**< Range is from start of one line to the start of another line. This 2371*bcb85aadSSteve Yin often means that an end-of-line character will appear at the end of the 2372*bcb85aadSSteve Yin range. However in the case of some applications an end-of-line character 2373*bcb85aadSSteve Yin indicates the end of a paragraph and the lines composing the paragraph, 2374*bcb85aadSSteve Yin other than the last line, do not contain an end of line character. */ 2375*bcb85aadSSteve Yin IA2_TEXT_BOUNDARY_ALL ///< Using this value will cause all text to be returned. 2376*bcb85aadSSteve Yin}; 2377*bcb85aadSSteve Yin 2378*bcb85aadSSteve Yin/** @brief This interface gives read-only access to text. 2379*bcb85aadSSteve Yin 2380*bcb85aadSSteve Yin The %IAccessibleText interface should be implemented by all components 2381*bcb85aadSSteve Yin that present textual information on the display like buttons, 2382*bcb85aadSSteve Yin text entry fields, or text portions of the document window. The interface 2383*bcb85aadSSteve Yin provides access to the text's content, attributes, and spatial location. 2384*bcb85aadSSteve Yin However, text can not be modified with this interface. That is the task 2385*bcb85aadSSteve Yin of the IAccessibleEditableText interface. 2386*bcb85aadSSteve Yin 2387*bcb85aadSSteve Yin The text length, i.e. the number of characters in the text, is 2388*bcb85aadSSteve Yin returned by IAccessibleText::nCharacters. All methods that operate 2389*bcb85aadSSteve Yin on particular characters (e.g. IAccessibleText::textAtOffset) use character 2390*bcb85aadSSteve Yin indices from 0 to length-1. All methods that operate on character positions 2391*bcb85aadSSteve Yin (e.g. IAccessibleText::text) use indices from 0 to length. 2392*bcb85aadSSteve Yin 2393*bcb85aadSSteve Yin Please note that accessible text does not necessarily support selection. 2394*bcb85aadSSteve Yin In this case it should behave as if there where no selection. An empty 2395*bcb85aadSSteve Yin selection is used for example to express the current cursor position. 2396*bcb85aadSSteve Yin 2397*bcb85aadSSteve Yin Refer to @ref _specialOffsets 2398*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2399*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2400*bcb85aadSSteve Yin 2401*bcb85aadSSteve Yin E_FAIL is returned in the following cases 2402*bcb85aadSSteve Yin @li endOffset < startOffset 2403*bcb85aadSSteve Yin @li endoffset > length 2404*bcb85aadSSteve Yin*/ 2405*bcb85aadSSteve Yin[object, uuid(24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B)] 2406*bcb85aadSSteve Yininterface IAccessibleText : IUnknown 2407*bcb85aadSSteve Yin{ 2408*bcb85aadSSteve Yin 2409*bcb85aadSSteve Yin /** @brief Adds a text selection 2410*bcb85aadSSteve Yin @param [in] startOffset 2411*bcb85aadSSteve Yin Starting offset ( 0 based). 2412*bcb85aadSSteve Yin @param [in] endOffset 2413*bcb85aadSSteve Yin Offset of first character after new selection (0 based). 2414*bcb85aadSSteve Yin @retval S_OK 2415*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2416*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 2417*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2418*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2419*bcb85aadSSteve Yin */ 2420*bcb85aadSSteve Yin HRESULT addSelection 2421*bcb85aadSSteve Yin ( 2422*bcb85aadSSteve Yin [in] long startOffset, 2423*bcb85aadSSteve Yin [in] long endOffset 2424*bcb85aadSSteve Yin ); 2425*bcb85aadSSteve Yin 2426*bcb85aadSSteve Yin /** @brief Returns text attributes. 2427*bcb85aadSSteve Yin @param [in] offset 2428*bcb85aadSSteve Yin Text offset (0 based). Refer to @ref _specialOffsets 2429*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2430*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2431*bcb85aadSSteve Yin @param [out] startOffset 2432*bcb85aadSSteve Yin The starting offset of the character range over which all text attributes match 2433*bcb85aadSSteve Yin those of offset. (0 based) 2434*bcb85aadSSteve Yin @param [out] endOffset 2435*bcb85aadSSteve Yin The offset of the first character past the character range over which all text 2436*bcb85aadSSteve Yin attributes match those of offset. (0 based) 2437*bcb85aadSSteve Yin @param [out] textAttributes 2438*bcb85aadSSteve Yin A string of attributes describing the text. The attributes are described in the 2439*bcb85aadSSteve Yin <a href="http://www.linuxfoundation.org/en/Accessibility/IAccessible2/TextAttributes"> 2440*bcb85aadSSteve Yin text attributes specification</a> on the %IAccessible2 web site. 2441*bcb85aadSSteve Yin @retval S_OK 2442*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] values are 0s and NULL respectively 2443*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2444*bcb85aadSSteve Yin */ 2445*bcb85aadSSteve Yin [propget] HRESULT attributes 2446*bcb85aadSSteve Yin ( 2447*bcb85aadSSteve Yin [in] long offset, 2448*bcb85aadSSteve Yin [out] long *startOffset, 2449*bcb85aadSSteve Yin [out] long *endOffset, 2450*bcb85aadSSteve Yin [out, retval] BSTR *textAttributes 2451*bcb85aadSSteve Yin ); 2452*bcb85aadSSteve Yin 2453*bcb85aadSSteve Yin /** @brief Returns the position of the caret. 2454*bcb85aadSSteve Yin 2455*bcb85aadSSteve Yin Returns the 0-based offset of the caret within the text. If the text is 2456*bcb85aadSSteve Yin implemented as a tree of text objects with embed characters in higher levels 2457*bcb85aadSSteve Yin representing substrings of child text objects and the caret is in one of the 2458*bcb85aadSSteve Yin child text objects, then the offset in the higher level text object would be 2459*bcb85aadSSteve Yin at the embed character representing child text object that contains the caret. 2460*bcb85aadSSteve Yin 2461*bcb85aadSSteve Yin For example, if the string "one two three" is implemented as a two text objects, 2462*bcb85aadSSteve Yin with a top level text object containing an embed character "one ? three" and a 2463*bcb85aadSSteve Yin child text object containing "two" and if the caret is in the descendant object 2464*bcb85aadSSteve Yin just before the 'o' in "two", then: 2465*bcb85aadSSteve Yin <ul> 2466*bcb85aadSSteve Yin <li>the caretOffset for the "one ? three" object would be 4, matching the embed character</li> 2467*bcb85aadSSteve Yin <li>the caretOffset for "two" would be 2, matching the "o"</li> 2468*bcb85aadSSteve Yin </ul> 2469*bcb85aadSSteve Yin The caret position/offset is that of the character logically following it, e.g. 2470*bcb85aadSSteve Yin to the right of it in a left to right language, or to the left of it in a right 2471*bcb85aadSSteve Yin to left language. 2472*bcb85aadSSteve Yin @param [out] offset 2473*bcb85aadSSteve Yin The returned offset is relative to the text represented by this object. 2474*bcb85aadSSteve Yin @retval S_OK 2475*bcb85aadSSteve Yin @retval S_FALSE if the caret is not currently active on this object, i.e. the 2476*bcb85aadSSteve Yin caret is located on some other object. The returned offset value will be -1. 2477*bcb85aadSSteve Yin @note S_FALSE (and an offset of -1) will not be returned if the caret is somewhere 2478*bcb85aadSSteve Yin in the text object or one of its descendants. 2479*bcb85aadSSteve Yin */ 2480*bcb85aadSSteve Yin [propget] HRESULT caretOffset 2481*bcb85aadSSteve Yin ( 2482*bcb85aadSSteve Yin [out, retval] long *offset 2483*bcb85aadSSteve Yin ); 2484*bcb85aadSSteve Yin 2485*bcb85aadSSteve Yin 2486*bcb85aadSSteve Yin /** @brief Returns the bounding box of the specified position. 2487*bcb85aadSSteve Yin 2488*bcb85aadSSteve Yin The virtual character after the last character of the represented 2489*bcb85aadSSteve Yin text, i.e. the one at position length is a special case. It represents the 2490*bcb85aadSSteve Yin current input position and will therefore typically be queried by AT more 2491*bcb85aadSSteve Yin often than other positions. Because it does not represent an existing character 2492*bcb85aadSSteve Yin its bounding box is defined in relation to preceding characters. It should be 2493*bcb85aadSSteve Yin roughly equivalent to the bounding box of some character when inserted at the 2494*bcb85aadSSteve Yin end of the text. Its height typically being the maximal height of all the 2495*bcb85aadSSteve Yin characters in the text or the height of the preceding character, its width being 2496*bcb85aadSSteve Yin at least one pixel so that the bounding box is not degenerate. 2497*bcb85aadSSteve Yin 2498*bcb85aadSSteve Yin Note that the index 'length' is not always valid. Whether it is or not is 2499*bcb85aadSSteve Yin implementation dependent. It typically is when text is editable or otherwise 2500*bcb85aadSSteve Yin when on the screen the caret can be placed behind the text. You can be sure 2501*bcb85aadSSteve Yin that the index is valid after you have received a ::IA2_EVENT_TEXT_CARET_MOVED 2502*bcb85aadSSteve Yin event for this index. 2503*bcb85aadSSteve Yin @param [in] offset 2504*bcb85aadSSteve Yin Index of the character for which to return its bounding box. The valid range 2505*bcb85aadSSteve Yin is 0..length. Refer to @ref _specialOffsets 2506*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2507*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2508*bcb85aadSSteve Yin @param [in] coordType 2509*bcb85aadSSteve Yin Specifies if the coordinates are relative to the screen or to the parent window. 2510*bcb85aadSSteve Yin @param [out] x 2511*bcb85aadSSteve Yin X coordinate of the top left corner of the bounding box of the referenced character. 2512*bcb85aadSSteve Yin @param [out] y 2513*bcb85aadSSteve Yin Y coordinate of the top left corner of the bounding box of the referenced character. 2514*bcb85aadSSteve Yin @param [out] width 2515*bcb85aadSSteve Yin Width of the bounding box of the referenced character. 2516*bcb85aadSSteve Yin @param [out] height 2517*bcb85aadSSteve Yin Height of the bounding box of the referenced character. 2518*bcb85aadSSteve Yin @retval S_OK 2519*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2520*bcb85aadSSteve Yin */ 2521*bcb85aadSSteve Yin [propget] HRESULT characterExtents 2522*bcb85aadSSteve Yin ( 2523*bcb85aadSSteve Yin [in] long offset, 2524*bcb85aadSSteve Yin [in] enum IA2CoordinateType coordType, 2525*bcb85aadSSteve Yin [out] long *x, 2526*bcb85aadSSteve Yin [out] long *y, 2527*bcb85aadSSteve Yin [out] long *width, 2528*bcb85aadSSteve Yin [out, retval] long *height 2529*bcb85aadSSteve Yin ); 2530*bcb85aadSSteve Yin 2531*bcb85aadSSteve Yin 2532*bcb85aadSSteve Yin /** @brief Returns the number of active non-contiguous selections 2533*bcb85aadSSteve Yin @param [out] nSelections 2534*bcb85aadSSteve Yin @retval S_OK 2535*bcb85aadSSteve Yin */ 2536*bcb85aadSSteve Yin [propget] HRESULT nSelections 2537*bcb85aadSSteve Yin ( 2538*bcb85aadSSteve Yin [out, retval] long *nSelections 2539*bcb85aadSSteve Yin ); 2540*bcb85aadSSteve Yin 2541*bcb85aadSSteve Yin /** @brief Returns the text position for the specified screen position. 2542*bcb85aadSSteve Yin 2543*bcb85aadSSteve Yin Given a point return the zero-based index of the character under that 2544*bcb85aadSSteve Yin point. The same functionality could be achieved by using the bounding 2545*bcb85aadSSteve Yin boxes for each character as returned by IAccessibleText::characterExtents. 2546*bcb85aadSSteve Yin The method IAccessibleText::offsetAtPoint, however, can be implemented 2547*bcb85aadSSteve Yin more efficiently. 2548*bcb85aadSSteve Yin 2549*bcb85aadSSteve Yin @param [in] x 2550*bcb85aadSSteve Yin The position's x value for which to look up the index of the character that 2551*bcb85aadSSteve Yin is rendered on to the display at that point. 2552*bcb85aadSSteve Yin @param [in] y 2553*bcb85aadSSteve Yin The position's y value for which to look up the index of the character that 2554*bcb85aadSSteve Yin is rendered on to the display at that point. 2555*bcb85aadSSteve Yin @param [in] coordType 2556*bcb85aadSSteve Yin Screen coordinates or window coordinates. 2557*bcb85aadSSteve Yin @param [out] offset 2558*bcb85aadSSteve Yin Index of the character under the given point or -1 if the point 2559*bcb85aadSSteve Yin is invalid or there is no character under the point. 2560*bcb85aadSSteve Yin @retval S_OK 2561*bcb85aadSSteve Yin @retval S_FALSE if nothing to return, [out] value is -1 2562*bcb85aadSSteve Yin 2563*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2564*bcb85aadSSteve Yin */ 2565*bcb85aadSSteve Yin [propget] HRESULT offsetAtPoint 2566*bcb85aadSSteve Yin ( 2567*bcb85aadSSteve Yin [in] long x, 2568*bcb85aadSSteve Yin [in] long y, 2569*bcb85aadSSteve Yin [in] enum IA2CoordinateType coordType, 2570*bcb85aadSSteve Yin [out, retval] long *offset 2571*bcb85aadSSteve Yin ); 2572*bcb85aadSSteve Yin 2573*bcb85aadSSteve Yin /** @brief Returns the character offsets of Nth active text selection 2574*bcb85aadSSteve Yin 2575*bcb85aadSSteve Yin Returns the 0-based starting and ending offsets of the Nth selection. If the 2576*bcb85aadSSteve Yin text is implemented as a tree of text objects with embed characters in higher 2577*bcb85aadSSteve Yin levels representing substrings of child text objects, consider the following. 2578*bcb85aadSSteve Yin If the starting selection offset is in one of the child text objects, then the 2579*bcb85aadSSteve Yin starting offset in the higher level text object would be at the embed character 2580*bcb85aadSSteve Yin representing the child text object that contains the starting selection offset. 2581*bcb85aadSSteve Yin If the ending selection offset is in one of the child text objects, then the 2582*bcb85aadSSteve Yin ending offset in the higher level text object would be just after the embed 2583*bcb85aadSSteve Yin character representing the child text object that contains the ending selection 2584*bcb85aadSSteve Yin offset. 2585*bcb85aadSSteve Yin 2586*bcb85aadSSteve Yin For example, if the string "one two three" is implemented as a two text objects, 2587*bcb85aadSSteve Yin with a top level text object containing an embed character "one ? three" and a 2588*bcb85aadSSteve Yin child text object containing "two" and if the selection is the string "two" then: 2589*bcb85aadSSteve Yin <ul> 2590*bcb85aadSSteve Yin <li>the startOffset for the "one ? three" object would be 4, matching the embed character and the endOffset would be 5.</li> 2591*bcb85aadSSteve Yin <li>the startOffset for the "two" object would be 0, and the endOffset would be 3</li> 2592*bcb85aadSSteve Yin </ul> 2593*bcb85aadSSteve Yin Selection offsets are that of the character logically following it, e.g. 2594*bcb85aadSSteve Yin to the right of it in a left to right language or to the left of it in a right to left language. 2595*bcb85aadSSteve Yin @param [in] selectionIndex 2596*bcb85aadSSteve Yin Index of selection (0 based). 2597*bcb85aadSSteve Yin @param [out] startOffset 2598*bcb85aadSSteve Yin 0 based offset of first selected character 2599*bcb85aadSSteve Yin @param [out] endOffset 2600*bcb85aadSSteve Yin 0 based offset of one past the last selected character. 2601*bcb85aadSSteve Yin @retval S_OK 2602*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2603*bcb85aadSSteve Yin */ 2604*bcb85aadSSteve Yin [propget] HRESULT selection 2605*bcb85aadSSteve Yin ( 2606*bcb85aadSSteve Yin [in] long selectionIndex, 2607*bcb85aadSSteve Yin [out] long *startOffset, 2608*bcb85aadSSteve Yin [out, retval] long *endOffset 2609*bcb85aadSSteve Yin ); 2610*bcb85aadSSteve Yin 2611*bcb85aadSSteve Yin /** @brief Returns the substring between the two given indices. 2612*bcb85aadSSteve Yin 2613*bcb85aadSSteve Yin The substring starts with the character at startOffset (inclusive) and up to 2614*bcb85aadSSteve Yin the character at endOffset (exclusive), if startOffset is less or equal 2615*bcb85aadSSteve Yin endOffset. If endOffset is lower than startOffset, the result is the same 2616*bcb85aadSSteve Yin as a call with the two arguments being exchanged. 2617*bcb85aadSSteve Yin 2618*bcb85aadSSteve Yin The whole text can be requested by passing the indices zero and 2619*bcb85aadSSteve Yin IAccessibleText::nCharacters. If both indices have the same value, an empty 2620*bcb85aadSSteve Yin string is returned. 2621*bcb85aadSSteve Yin @param [in] startOffset 2622*bcb85aadSSteve Yin Index of the first character to include in the returned string. The valid range 2623*bcb85aadSSteve Yin is 0..length. 2624*bcb85aadSSteve Yin @param [in] endOffset 2625*bcb85aadSSteve Yin Index of the last character to exclude in the returned string. The valid range 2626*bcb85aadSSteve Yin is 0..length. 2627*bcb85aadSSteve Yin @param [out] text 2628*bcb85aadSSteve Yin Returns the substring starting with the character at startOffset (inclusive) 2629*bcb85aadSSteve Yin and up to the character at endOffset (exclusive), if startOffset is less than 2630*bcb85aadSSteve Yin or equal to endOffset. 2631*bcb85aadSSteve Yin @retval S_OK 2632*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2633*bcb85aadSSteve Yin @note 2634*bcb85aadSSteve Yin @li The returned string may be longer than endOffset-startOffset bytes if text 2635*bcb85aadSSteve Yin contains multi-byte characters. 2636*bcb85aadSSteve Yin @li Refer to @ref _specialOffsets 2637*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2638*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2639*bcb85aadSSteve Yin */ 2640*bcb85aadSSteve Yin [propget] HRESULT text 2641*bcb85aadSSteve Yin ( 2642*bcb85aadSSteve Yin [in] long startOffset, 2643*bcb85aadSSteve Yin [in] long endOffset, 2644*bcb85aadSSteve Yin [out, retval] BSTR *text 2645*bcb85aadSSteve Yin ); 2646*bcb85aadSSteve Yin 2647*bcb85aadSSteve Yin /** @brief Returns a text portion before the given position. 2648*bcb85aadSSteve Yin 2649*bcb85aadSSteve Yin Returns the substring of the specified text type that is located before the 2650*bcb85aadSSteve Yin given character and does not include it. The result of this method should be 2651*bcb85aadSSteve Yin same as a result for IAccessibleText::textAtOffset with a suitably decreased 2652*bcb85aadSSteve Yin index value. 2653*bcb85aadSSteve Yin 2654*bcb85aadSSteve Yin For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete 2655*bcb85aadSSteve Yin word that is closest to and located before offset is returned. 2656*bcb85aadSSteve Yin 2657*bcb85aadSSteve Yin If the index is valid, but no text is found, S_FALSE is returned along with out 2658*bcb85aadSSteve Yin values of 0, 0, and a NULL pointer. This would happen for boundary types other 2659*bcb85aadSSteve Yin than character when the text consists entirely of whitespace. 2660*bcb85aadSSteve Yin 2661*bcb85aadSSteve Yin @param [in] offset 2662*bcb85aadSSteve Yin Index of the character for which to return the text part before it. The index 2663*bcb85aadSSteve Yin character will not be part of the returned string. The valid range is 0..length. 2664*bcb85aadSSteve Yin Refer to @ref _specialOffsets 2665*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2666*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2667*bcb85aadSSteve Yin @param [in] boundaryType 2668*bcb85aadSSteve Yin The type of the text portion to return. See ::IA2TextBoundaryType for the 2669*bcb85aadSSteve Yin complete list. 2670*bcb85aadSSteve Yin @param [out] startOffset 2671*bcb85aadSSteve Yin 0 based offset of first character. 2672*bcb85aadSSteve Yin @param [out] endOffset 2673*bcb85aadSSteve Yin 0 based offset of one past the last character. 2674*bcb85aadSSteve Yin @param [out] text 2675*bcb85aadSSteve Yin Returns the requested text portion. This portion may be empty or invalid when 2676*bcb85aadSSteve Yin no appropriate text portion is found or text type is invalid. 2677*bcb85aadSSteve Yin @retval S_OK 2678*bcb85aadSSteve Yin @retval S_FALSE if the requested boundary type is not implemented, such as 2679*bcb85aadSSteve Yin ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; 2680*bcb85aadSSteve Yin [out] values are 0s and NULL respectively 2681*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2682*bcb85aadSSteve Yin */ 2683*bcb85aadSSteve Yin [propget] HRESULT textBeforeOffset 2684*bcb85aadSSteve Yin ( 2685*bcb85aadSSteve Yin [in] long offset, 2686*bcb85aadSSteve Yin [in] enum IA2TextBoundaryType boundaryType, 2687*bcb85aadSSteve Yin [out] long *startOffset, 2688*bcb85aadSSteve Yin [out] long *endOffset, 2689*bcb85aadSSteve Yin [out, retval] BSTR *text 2690*bcb85aadSSteve Yin ); 2691*bcb85aadSSteve Yin 2692*bcb85aadSSteve Yin /** @brief Returns a text portion after the given position. 2693*bcb85aadSSteve Yin 2694*bcb85aadSSteve Yin Returns the substring of the specified text type that is located after the 2695*bcb85aadSSteve Yin given character and does not include it. The result of this method should be 2696*bcb85aadSSteve Yin same as a result for IAccessibleText::textAtOffset with a suitably increased 2697*bcb85aadSSteve Yin index value. 2698*bcb85aadSSteve Yin 2699*bcb85aadSSteve Yin For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete 2700*bcb85aadSSteve Yin word that is closest to and located after offset is returned. 2701*bcb85aadSSteve Yin 2702*bcb85aadSSteve Yin If the index is valid, but no text is found, S_FALSE is returned along with out 2703*bcb85aadSSteve Yin values of 0, 0, and a NULL pointer. This would happen for boundary types other 2704*bcb85aadSSteve Yin than character when the text consists entirely of whitespace. 2705*bcb85aadSSteve Yin 2706*bcb85aadSSteve Yin @param [in] offset 2707*bcb85aadSSteve Yin Index of the character for which to return the text part after it. The index 2708*bcb85aadSSteve Yin character will not be part of the returned string. The valid range is 0..length. 2709*bcb85aadSSteve Yin Refer to @ref _specialOffsets 2710*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2711*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2712*bcb85aadSSteve Yin @param [in] boundaryType 2713*bcb85aadSSteve Yin The type of the text portion to return. See ::IA2TextBoundaryType for the complete 2714*bcb85aadSSteve Yin list. 2715*bcb85aadSSteve Yin @param [out] startOffset 2716*bcb85aadSSteve Yin 0 based offset of first character. 2717*bcb85aadSSteve Yin @param [out] endOffset 2718*bcb85aadSSteve Yin 0 based offset of one past the last character. 2719*bcb85aadSSteve Yin @param [out] text 2720*bcb85aadSSteve Yin Returns the requested text portion. This portion may be empty or invalid when 2721*bcb85aadSSteve Yin no appropriate text portion is found or text type is invalid. 2722*bcb85aadSSteve Yin @retval S_OK 2723*bcb85aadSSteve Yin @retval S_FALSE if the requested boundary type is not implemented, such as 2724*bcb85aadSSteve Yin ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; 2725*bcb85aadSSteve Yin [out] values are 0s and NULL respectively 2726*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2727*bcb85aadSSteve Yin */ 2728*bcb85aadSSteve Yin [propget] HRESULT textAfterOffset 2729*bcb85aadSSteve Yin ( 2730*bcb85aadSSteve Yin [in] long offset, 2731*bcb85aadSSteve Yin [in] enum IA2TextBoundaryType boundaryType, 2732*bcb85aadSSteve Yin [out] long *startOffset, 2733*bcb85aadSSteve Yin [out] long *endOffset, 2734*bcb85aadSSteve Yin [out, retval] BSTR *text 2735*bcb85aadSSteve Yin ); 2736*bcb85aadSSteve Yin 2737*bcb85aadSSteve Yin /** @brief Returns a text portion that spans the given position. 2738*bcb85aadSSteve Yin 2739*bcb85aadSSteve Yin Returns the substring defined by the specified boundary type at the specified 2740*bcb85aadSSteve Yin offset. Refer to IA2TextBoundaryType for more details. 2741*bcb85aadSSteve Yin 2742*bcb85aadSSteve Yin For the word boundary type the returned string will contain the word at the 2743*bcb85aadSSteve Yin offset if the offset is inside a word and will contain the word before the 2744*bcb85aadSSteve Yin offset if the offset is not inside a word. All offsets from the first to the 2745*bcb85aadSSteve Yin last characters of a word are considered inside the word. Boundary types of 2746*bcb85aadSSteve Yin sentence and paragraph should exhibit similar behavior. 2747*bcb85aadSSteve Yin 2748*bcb85aadSSteve Yin If the index is valid, but no text is found, S_FALSE is returned along with out 2749*bcb85aadSSteve Yin values of 0, 0, and a NULL pointer. This would happen for boundary types other 2750*bcb85aadSSteve Yin than character when the text consists entirely of whitespace. 2751*bcb85aadSSteve Yin 2752*bcb85aadSSteve Yin @param [in] offset 2753*bcb85aadSSteve Yin Index of the character for which to return the text part it belongs to. The valid 2754*bcb85aadSSteve Yin range is 0..length. 2755*bcb85aadSSteve Yin Refer to @ref _specialOffsets 2756*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2757*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2758*bcb85aadSSteve Yin @param [in] boundaryType 2759*bcb85aadSSteve Yin The type of the text portion to return. See ::IA2TextBoundaryType for the complete 2760*bcb85aadSSteve Yin list. 2761*bcb85aadSSteve Yin @param [out] startOffset 2762*bcb85aadSSteve Yin 0 based offset of first character. 2763*bcb85aadSSteve Yin @param [out] endOffset 2764*bcb85aadSSteve Yin 0 based offset of one past the last character. 2765*bcb85aadSSteve Yin @param [out] text 2766*bcb85aadSSteve Yin Returns the requested text portion. This portion may be empty or invalid when 2767*bcb85aadSSteve Yin no appropriate text portion is found or text type is invalid. 2768*bcb85aadSSteve Yin @retval S_OK 2769*bcb85aadSSteve Yin @retval S_FALSE if the requested boundary type is not implemented, such as 2770*bcb85aadSSteve Yin ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; 2771*bcb85aadSSteve Yin [out] values are 0s and NULL respectively 2772*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2773*bcb85aadSSteve Yin */ 2774*bcb85aadSSteve Yin [propget] HRESULT textAtOffset 2775*bcb85aadSSteve Yin ( 2776*bcb85aadSSteve Yin [in] long offset, 2777*bcb85aadSSteve Yin [in] enum IA2TextBoundaryType boundaryType, 2778*bcb85aadSSteve Yin [out] long *startOffset, 2779*bcb85aadSSteve Yin [out] long *endOffset, 2780*bcb85aadSSteve Yin [out, retval] BSTR *text 2781*bcb85aadSSteve Yin ); 2782*bcb85aadSSteve Yin 2783*bcb85aadSSteve Yin /** @brief Unselects a range of text. 2784*bcb85aadSSteve Yin @param [in] selectionIndex 2785*bcb85aadSSteve Yin Index of selection to remove (0 based). 2786*bcb85aadSSteve Yin @retval S_OK 2787*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2788*bcb85aadSSteve Yin */ 2789*bcb85aadSSteve Yin HRESULT removeSelection 2790*bcb85aadSSteve Yin ( 2791*bcb85aadSSteve Yin [in] long selectionIndex 2792*bcb85aadSSteve Yin ); 2793*bcb85aadSSteve Yin 2794*bcb85aadSSteve Yin /** @brief Sets the position of the caret. 2795*bcb85aadSSteve Yin 2796*bcb85aadSSteve Yin The caret position/offset is that of the character logically following it, 2797*bcb85aadSSteve Yin e.g. to the right of it in a left to right language. 2798*bcb85aadSSteve Yin 2799*bcb85aadSSteve Yin Setting the caret position may or may not alter the current selection. A 2800*bcb85aadSSteve Yin change of the selection is notified to the accessibility event listeners with 2801*bcb85aadSSteve Yin an ::IA2_EVENT_TEXT_SELECTION_CHANGED event. 2802*bcb85aadSSteve Yin 2803*bcb85aadSSteve Yin When the new caret position differs from the old one (which, of course, is the 2804*bcb85aadSSteve Yin standard case) this is notified to the accessibility event listeners with an 2805*bcb85aadSSteve Yin ::IA2_EVENT_TEXT_CARET_MOVED event. 2806*bcb85aadSSteve Yin @param [in] offset 2807*bcb85aadSSteve Yin The new index of the caret. This caret is actually placed to the left side of 2808*bcb85aadSSteve Yin the character with that index. An index of 0 places the caret so that the next 2809*bcb85aadSSteve Yin insertion goes before the first character. An index of IAccessibleText::nCharacters 2810*bcb85aadSSteve Yin leads to insertion after the last character. Refer to @ref _specialOffsets 2811*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2812*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2813*bcb85aadSSteve Yin @retval S_OK 2814*bcb85aadSSteve Yin @retval E_FAIL if the caret cannot be set 2815*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2816*bcb85aadSSteve Yin */ 2817*bcb85aadSSteve Yin HRESULT setCaretOffset 2818*bcb85aadSSteve Yin ( 2819*bcb85aadSSteve Yin [in] long offset 2820*bcb85aadSSteve Yin ); 2821*bcb85aadSSteve Yin 2822*bcb85aadSSteve Yin /** @brief Changes the bounds of an existing selection. 2823*bcb85aadSSteve Yin @param [in] selectionIndex 2824*bcb85aadSSteve Yin Index of selection to change (0 based) 2825*bcb85aadSSteve Yin @param [in] startOffset 2826*bcb85aadSSteve Yin New starting offset (0 based) 2827*bcb85aadSSteve Yin @param [in] endOffset 2828*bcb85aadSSteve Yin New ending offset (0 based) - the offset of the character just past the last character of the selection. 2829*bcb85aadSSteve Yin @retval S_OK 2830*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2831*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 2832*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2833*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2834*bcb85aadSSteve Yin */ 2835*bcb85aadSSteve Yin HRESULT setSelection 2836*bcb85aadSSteve Yin ( 2837*bcb85aadSSteve Yin [in] long selectionIndex, 2838*bcb85aadSSteve Yin [in] long startOffset, 2839*bcb85aadSSteve Yin [in] long endOffset 2840*bcb85aadSSteve Yin ); 2841*bcb85aadSSteve Yin 2842*bcb85aadSSteve Yin /** @brief Returns total number of characters. 2843*bcb85aadSSteve Yin 2844*bcb85aadSSteve Yin Note that this may be different than the total number of bytes required to store the 2845*bcb85aadSSteve Yin text, if the text contains multi-byte characters. 2846*bcb85aadSSteve Yin @param [out] nCharacters 2847*bcb85aadSSteve Yin @retval S_OK 2848*bcb85aadSSteve Yin */ 2849*bcb85aadSSteve Yin [propget] HRESULT nCharacters 2850*bcb85aadSSteve Yin ( 2851*bcb85aadSSteve Yin [out, retval] long *nCharacters 2852*bcb85aadSSteve Yin ); 2853*bcb85aadSSteve Yin 2854*bcb85aadSSteve Yin /** @brief Makes a specific part of string visible on screen. 2855*bcb85aadSSteve Yin @param [in] startIndex 2856*bcb85aadSSteve Yin 0 based character offset. 2857*bcb85aadSSteve Yin @param [in] endIndex 2858*bcb85aadSSteve Yin 0 based character offset - the offset of the character just past the last character of the string. 2859*bcb85aadSSteve Yin @param [in] scrollType 2860*bcb85aadSSteve Yin Defines where the object should be placed on the screen. 2861*bcb85aadSSteve Yin @retval S_OK 2862*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2863*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 2864*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2865*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2866*bcb85aadSSteve Yin */ 2867*bcb85aadSSteve Yin HRESULT scrollSubstringTo 2868*bcb85aadSSteve Yin ( 2869*bcb85aadSSteve Yin [in] long startIndex, 2870*bcb85aadSSteve Yin [in] long endIndex, 2871*bcb85aadSSteve Yin [in] enum IA2ScrollType scrollType 2872*bcb85aadSSteve Yin ); 2873*bcb85aadSSteve Yin 2874*bcb85aadSSteve Yin /** @brief Moves the top left of a substring to a specified location. 2875*bcb85aadSSteve Yin 2876*bcb85aadSSteve Yin @param [in] startIndex 2877*bcb85aadSSteve Yin 0 based character offset. 2878*bcb85aadSSteve Yin @param [in] endIndex 2879*bcb85aadSSteve Yin 0 based character offset - the offset of the character just past the last character of the string. 2880*bcb85aadSSteve Yin @param [in] coordinateType 2881*bcb85aadSSteve Yin Specifies whether the coordinates are relative to the screen or the parent object. 2882*bcb85aadSSteve Yin @param [in] x 2883*bcb85aadSSteve Yin Defines the x coordinate. 2884*bcb85aadSSteve Yin @param [in] y 2885*bcb85aadSSteve Yin Defines the y coordinate. 2886*bcb85aadSSteve Yin @retval S_OK 2887*bcb85aadSSteve Yin @retval S_FALSE if the object is already at the specified location. 2888*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 2889*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 2890*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 2891*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleText methods. 2892*bcb85aadSSteve Yin */ 2893*bcb85aadSSteve Yin HRESULT scrollSubstringToPoint 2894*bcb85aadSSteve Yin ( 2895*bcb85aadSSteve Yin [in] long startIndex, 2896*bcb85aadSSteve Yin [in] long endIndex, 2897*bcb85aadSSteve Yin [in] enum IA2CoordinateType coordinateType, 2898*bcb85aadSSteve Yin [in] long x, 2899*bcb85aadSSteve Yin [in] long y 2900*bcb85aadSSteve Yin ); 2901*bcb85aadSSteve Yin 2902*bcb85aadSSteve Yin /** @brief Returns any inserted text. 2903*bcb85aadSSteve Yin 2904*bcb85aadSSteve Yin Provided for use by the ::IA2_EVENT_TEXT_INSERTED and ::IA2_EVENT_TEXT_UPDATED 2905*bcb85aadSSteve Yin event handlers. 2906*bcb85aadSSteve Yin 2907*bcb85aadSSteve Yin This data is only guaranteed to be valid while the thread notifying the event 2908*bcb85aadSSteve Yin continues. Once the handler has returned, the validity of the data depends on 2909*bcb85aadSSteve Yin how the server manages the life cycle of its objects. Also, note that the server 2910*bcb85aadSSteve Yin may have different life cycle management strategies for controls depending on 2911*bcb85aadSSteve Yin whether or not a control manages its children. Lists, trees, and tables can have 2912*bcb85aadSSteve Yin a large number of children and thus it's possible that the child objects for those 2913*bcb85aadSSteve Yin controls would only be created as needed. Servers should document their life cycle 2914*bcb85aadSSteve Yin strategy as this will be of interest to assistive technology or script engines 2915*bcb85aadSSteve Yin accessing data out of process or from other threads. Servers only need to save the 2916*bcb85aadSSteve Yin last inserted block of text and a scope of the entire application is adequate. 2917*bcb85aadSSteve Yin 2918*bcb85aadSSteve Yin @param [out] newText 2919*bcb85aadSSteve Yin The text that was just inserted. 2920*bcb85aadSSteve Yin @retval S_OK 2921*bcb85aadSSteve Yin @retval S_FALSE If there is nothing to return, the values of IA2TextSegment 2922*bcb85aadSSteve Yin struct are set as follows: text = NULL, start = 0, end = 0. 2923*bcb85aadSSteve Yin 2924*bcb85aadSSteve Yin */ 2925*bcb85aadSSteve Yin [propget] HRESULT newText 2926*bcb85aadSSteve Yin ( 2927*bcb85aadSSteve Yin [out, retval] IA2TextSegment *newText 2928*bcb85aadSSteve Yin ); 2929*bcb85aadSSteve Yin 2930*bcb85aadSSteve Yin /** @brief Returns any removed text. 2931*bcb85aadSSteve Yin 2932*bcb85aadSSteve Yin Provided for use by the IA2_EVENT_TEXT_REMOVED/UPDATED event handlers. 2933*bcb85aadSSteve Yin 2934*bcb85aadSSteve Yin This data is only guaranteed to be valid while the thread notifying the event 2935*bcb85aadSSteve Yin continues. Once the handler has returned, the validity of the data depends on 2936*bcb85aadSSteve Yin how the server manages the life cycle of its objects. Also, note that the server 2937*bcb85aadSSteve Yin may have different life cycle management strategies for controls depending on 2938*bcb85aadSSteve Yin whether or not a control manages its children. Lists, trees, and tables can have 2939*bcb85aadSSteve Yin a large number of children and thus it's possible that the child objects for those 2940*bcb85aadSSteve Yin controls would only be created as needed. Servers should document their life cycle 2941*bcb85aadSSteve Yin strategy as this will be of interest to assistive technology or script engines 2942*bcb85aadSSteve Yin accessing data out of process or from other threads. Servers only need to save the 2943*bcb85aadSSteve Yin last removed block of text and a scope of the entire application is adequate. 2944*bcb85aadSSteve Yin 2945*bcb85aadSSteve Yin @param [out] oldText 2946*bcb85aadSSteve Yin The text that was just removed. 2947*bcb85aadSSteve Yin @retval S_OK 2948*bcb85aadSSteve Yin @retval S_FALSE If there is nothing to return, the values of IA2TextSegment 2949*bcb85aadSSteve Yin struct are set as follows: text = NULL, start = 0, end = 0. 2950*bcb85aadSSteve Yin */ 2951*bcb85aadSSteve Yin [propget] HRESULT oldText 2952*bcb85aadSSteve Yin ( 2953*bcb85aadSSteve Yin [out, retval] IA2TextSegment *oldText 2954*bcb85aadSSteve Yin ); 2955*bcb85aadSSteve Yin 2956*bcb85aadSSteve Yin} 2957*bcb85aadSSteve Yin/************************************************************************* 2958*bcb85aadSSteve Yin * 2959*bcb85aadSSteve Yin * File Name (AccessibleText2.idl) 2960*bcb85aadSSteve Yin * 2961*bcb85aadSSteve Yin * IAccessible2 IDL Specification 2962*bcb85aadSSteve Yin * 2963*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 2964*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 2965*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 2966*bcb85aadSSteve Yin * All rights reserved. 2967*bcb85aadSSteve Yin * 2968*bcb85aadSSteve Yin * 2969*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 2970*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 2971*bcb85aadSSteve Yin * are met: 2972*bcb85aadSSteve Yin * 2973*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 2974*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 2975*bcb85aadSSteve Yin * 2976*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 2977*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 2978*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 2979*bcb85aadSSteve Yin * provided with the distribution. 2980*bcb85aadSSteve Yin * 2981*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 2982*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 2983*bcb85aadSSteve Yin * derived from this software without specific prior written 2984*bcb85aadSSteve Yin * permission. 2985*bcb85aadSSteve Yin * 2986*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 2987*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 2988*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 2989*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2990*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 2991*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2992*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2993*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 2994*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2995*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2996*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2997*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 2998*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2999*bcb85aadSSteve Yin * 3000*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 3001*bcb85aadSSteve Yin * BSD License" as published at: 3002*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 3003*bcb85aadSSteve Yin * 3004*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 3005*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 3006*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 3007*bcb85aadSSteve Yin * 3008*bcb85aadSSteve Yin ************************************************************************/ 3009*bcb85aadSSteve Yin 3010*bcb85aadSSteve Yin 3011*bcb85aadSSteve Yin 3012*bcb85aadSSteve Yin 3013*bcb85aadSSteve Yin 3014*bcb85aadSSteve Yin 3015*bcb85aadSSteve Yin 3016*bcb85aadSSteve Yin/** @brief This interface gives read-only access to text. 3017*bcb85aadSSteve Yin 3018*bcb85aadSSteve Yin The %IAccessibleText2 interface extends the functionality of the 3019*bcb85aadSSteve Yin %IAccessibleText interface. 3020*bcb85aadSSteve Yin*/ 3021*bcb85aadSSteve Yin[object, uuid(9690A9CC-5C80-4DF5-852E-2D5AE4189A54)] 3022*bcb85aadSSteve Yininterface IAccessibleText2 : IAccessibleText 3023*bcb85aadSSteve Yin{ 3024*bcb85aadSSteve Yin 3025*bcb85aadSSteve Yin /** @brief Returns the range and of the specified set of attributes. 3026*bcb85aadSSteve Yin 3027*bcb85aadSSteve Yin Return the range (start and end offsets) and text attributes that correspond 3028*bcb85aadSSteve Yin to the given attributes filter at the given offset. 3029*bcb85aadSSteve Yin 3030*bcb85aadSSteve Yin @param [in] offset 3031*bcb85aadSSteve Yin The offset at which to search for the attributes specified in the filter. 3032*bcb85aadSSteve Yin @param [in] filter 3033*bcb85aadSSteve Yin The requested attribute names. The filter format is "attribute1, attribute2". 3034*bcb85aadSSteve Yin @param [out] startOffset 3035*bcb85aadSSteve Yin The starting (0-based) offset of the text containing the specified attributes. 3036*bcb85aadSSteve Yin @param [out] endOffset 3037*bcb85aadSSteve Yin The (0-based) offset one past the last character of the text containing the 3038*bcb85aadSSteve Yin specified attributes. 3039*bcb85aadSSteve Yin @param [out] attributeValues 3040*bcb85aadSSteve Yin The values of the requested attributes. 3041*bcb85aadSSteve Yin @retval S_OK 3042*bcb85aadSSteve Yin @retval S_FALSE if nothing to return, [out] values are -1, -1, NULL respectively. 3043*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed. 3044*bcb85aadSSteve Yin */ 3045*bcb85aadSSteve Yin [propget] HRESULT attributeRange 3046*bcb85aadSSteve Yin ( 3047*bcb85aadSSteve Yin [in] long offset, 3048*bcb85aadSSteve Yin [in] BSTR filter, 3049*bcb85aadSSteve Yin [out] long *startOffset, 3050*bcb85aadSSteve Yin [out] long *endOffset, 3051*bcb85aadSSteve Yin [out, retval] BSTR *attributeValues 3052*bcb85aadSSteve Yin ); 3053*bcb85aadSSteve Yin 3054*bcb85aadSSteve Yin} 3055*bcb85aadSSteve Yin/************************************************************************* 3056*bcb85aadSSteve Yin * 3057*bcb85aadSSteve Yin * File Name (AccessibleEditableText.idl) 3058*bcb85aadSSteve Yin * 3059*bcb85aadSSteve Yin * IAccessible2 IDL Specification 3060*bcb85aadSSteve Yin * 3061*bcb85aadSSteve Yin * Copyright (c) 2007, 2012 Linux Foundation 3062*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 3063*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 3064*bcb85aadSSteve Yin * All rights reserved. 3065*bcb85aadSSteve Yin * 3066*bcb85aadSSteve Yin * 3067*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 3068*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 3069*bcb85aadSSteve Yin * are met: 3070*bcb85aadSSteve Yin * 3071*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 3072*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 3073*bcb85aadSSteve Yin * 3074*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 3075*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 3076*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 3077*bcb85aadSSteve Yin * provided with the distribution. 3078*bcb85aadSSteve Yin * 3079*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 3080*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 3081*bcb85aadSSteve Yin * derived from this software without specific prior written 3082*bcb85aadSSteve Yin * permission. 3083*bcb85aadSSteve Yin * 3084*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 3085*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 3086*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 3087*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 3088*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 3089*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3090*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 3091*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 3092*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3093*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3094*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 3095*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 3096*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3097*bcb85aadSSteve Yin * 3098*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 3099*bcb85aadSSteve Yin * BSD License" as published at: 3100*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 3101*bcb85aadSSteve Yin * 3102*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 3103*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 3104*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 3105*bcb85aadSSteve Yin * 3106*bcb85aadSSteve Yin ************************************************************************/ 3107*bcb85aadSSteve Yin 3108*bcb85aadSSteve Yin 3109*bcb85aadSSteve Yin 3110*bcb85aadSSteve Yin 3111*bcb85aadSSteve Yin 3112*bcb85aadSSteve Yin 3113*bcb85aadSSteve Yin/** @brief This interface provides clipboard capability to text objects. 3114*bcb85aadSSteve Yin 3115*bcb85aadSSteve Yin This interface is typically used in conjunction with the IAccessibleText 3116*bcb85aadSSteve Yin interface and complements that interface with the additional capability of 3117*bcb85aadSSteve Yin clipboard operations. Note that even a read only text object can support 3118*bcb85aadSSteve Yin the copy capability so this interface is not limited to editable objects. 3119*bcb85aadSSteve Yin 3120*bcb85aadSSteve Yin The substrings used with this interface are specified as follows: 3121*bcb85aadSSteve Yin If startOffset is less than endOffset, the substring starts with the 3122*bcb85aadSSteve Yin character at startOffset and ends with the character just before endOffset. 3123*bcb85aadSSteve Yin If endOffset is lower than startOffset, the result is the same as a call 3124*bcb85aadSSteve Yin with the two arguments exchanged. The whole text can be defined by passing 3125*bcb85aadSSteve Yin the indices zero and IAccessibleText::nCharacters. If both indices have the 3126*bcb85aadSSteve Yin same value, an empty string is defined. 3127*bcb85aadSSteve Yin 3128*bcb85aadSSteve Yin Refer to the @ref _specialOffsets 3129*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3130*bcb85aadSSteve Yin for information about a special offset constant that can be used in %IAccessibleEditableText methods. 3131*bcb85aadSSteve Yin*/ 3132*bcb85aadSSteve Yin[object, uuid(A59AA09A-7011-4b65-939D-32B1FB5547E3)] 3133*bcb85aadSSteve Yininterface IAccessibleEditableText : IUnknown 3134*bcb85aadSSteve Yin{ 3135*bcb85aadSSteve Yin 3136*bcb85aadSSteve Yin /** @brief Copies the text range into the clipboard. 3137*bcb85aadSSteve Yin 3138*bcb85aadSSteve Yin The selection is set to the specified offsets and then selection is copied into 3139*bcb85aadSSteve Yin the system clipboard. 3140*bcb85aadSSteve Yin 3141*bcb85aadSSteve Yin @param [in] startOffset 3142*bcb85aadSSteve Yin Start index of the text to moved into the clipboard. 3143*bcb85aadSSteve Yin The valid range is 0..length. 3144*bcb85aadSSteve Yin @param [in] endOffset 3145*bcb85aadSSteve Yin End index of the text to moved into the clipboard. 3146*bcb85aadSSteve Yin The valid range is 0..length. 3147*bcb85aadSSteve Yin @retval S_OK 3148*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3149*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 3150*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3151*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleEditableText 3152*bcb85aadSSteve Yin methods. 3153*bcb85aadSSteve Yin @deprecated This function is available via the application's GUI. 3154*bcb85aadSSteve Yin */ 3155*bcb85aadSSteve Yin HRESULT copyText 3156*bcb85aadSSteve Yin ( 3157*bcb85aadSSteve Yin [in] long startOffset, 3158*bcb85aadSSteve Yin [in] long endOffset 3159*bcb85aadSSteve Yin ); 3160*bcb85aadSSteve Yin 3161*bcb85aadSSteve Yin /** @brief Deletes a range of text. 3162*bcb85aadSSteve Yin 3163*bcb85aadSSteve Yin The text between and including the two given indices is deleted 3164*bcb85aadSSteve Yin from the text represented by this object. 3165*bcb85aadSSteve Yin 3166*bcb85aadSSteve Yin @param [in] startOffset 3167*bcb85aadSSteve Yin Start index of the text to be deleted. 3168*bcb85aadSSteve Yin The valid range is 0..length. 3169*bcb85aadSSteve Yin @param [in] endOffset 3170*bcb85aadSSteve Yin End index of the text to be deleted. 3171*bcb85aadSSteve Yin The valid range is 0..length. 3172*bcb85aadSSteve Yin @retval S_OK 3173*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3174*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 3175*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3176*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleEditableText 3177*bcb85aadSSteve Yin methods. 3178*bcb85aadSSteve Yin */ 3179*bcb85aadSSteve Yin HRESULT deleteText 3180*bcb85aadSSteve Yin ( 3181*bcb85aadSSteve Yin [in] long startOffset, 3182*bcb85aadSSteve Yin [in] long endOffset 3183*bcb85aadSSteve Yin ); 3184*bcb85aadSSteve Yin 3185*bcb85aadSSteve Yin /** @brief Inserts text at the specified position. 3186*bcb85aadSSteve Yin 3187*bcb85aadSSteve Yin The specified string is inserted at the given index into the text 3188*bcb85aadSSteve Yin represented by this object. 3189*bcb85aadSSteve Yin 3190*bcb85aadSSteve Yin @param [in] offset 3191*bcb85aadSSteve Yin Index at which to insert the text. 3192*bcb85aadSSteve Yin The valid range is 0..length. 3193*bcb85aadSSteve Yin Refer to @ref _specialOffsets 3194*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3195*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleEditableText 3196*bcb85aadSSteve Yin methods. 3197*bcb85aadSSteve Yin @param [in] text 3198*bcb85aadSSteve Yin Text that is inserted. 3199*bcb85aadSSteve Yin @retval S_OK 3200*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3201*bcb85aadSSteve Yin */ 3202*bcb85aadSSteve Yin HRESULT insertText 3203*bcb85aadSSteve Yin ( 3204*bcb85aadSSteve Yin [in] long offset, 3205*bcb85aadSSteve Yin [in] BSTR *text 3206*bcb85aadSSteve Yin ); 3207*bcb85aadSSteve Yin 3208*bcb85aadSSteve Yin /** @brief Deletes a range of text and copies it to the clipboard. 3209*bcb85aadSSteve Yin 3210*bcb85aadSSteve Yin The selection is set to the specified offsets, the selection is then copied into 3211*bcb85aadSSteve Yin the system clipboard, and then the selection is deleted. 3212*bcb85aadSSteve Yin 3213*bcb85aadSSteve Yin @param [in] startOffset 3214*bcb85aadSSteve Yin Start index of the text to be deleted. 3215*bcb85aadSSteve Yin The valid range is 0..length. 3216*bcb85aadSSteve Yin @param [in] endOffset 3217*bcb85aadSSteve Yin End index of the text to be deleted. 3218*bcb85aadSSteve Yin The valid range is 0..length. 3219*bcb85aadSSteve Yin @retval S_OK 3220*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3221*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 3222*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3223*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleEditableText 3224*bcb85aadSSteve Yin methods. 3225*bcb85aadSSteve Yin @deprecated This function is available via the application's GUI. 3226*bcb85aadSSteve Yin */ 3227*bcb85aadSSteve Yin HRESULT cutText 3228*bcb85aadSSteve Yin ( 3229*bcb85aadSSteve Yin [in] long startOffset, 3230*bcb85aadSSteve Yin [in] long endOffset 3231*bcb85aadSSteve Yin ); 3232*bcb85aadSSteve Yin 3233*bcb85aadSSteve Yin /** @brief Pastes content from the clipboard. 3234*bcb85aadSSteve Yin 3235*bcb85aadSSteve Yin Any existing selection is removed, the clipboard content is then pasted into 3236*bcb85aadSSteve Yin this object's text at the given offset. This method is similar to the insertText 3237*bcb85aadSSteve Yin method. If the index is not valid the system clipboard content is not inserted. The 3238*bcb85aadSSteve Yin behavior is the same as when Ctrl+V is used, i.e. the pasted contents are not 3239*bcb85aadSSteve Yin necessarily plain text. 3240*bcb85aadSSteve Yin 3241*bcb85aadSSteve Yin @param [in] offset 3242*bcb85aadSSteve Yin Index at which to insert the content from the system clipboard into 3243*bcb85aadSSteve Yin the text represented by this object. 3244*bcb85aadSSteve Yin The valid range is 0..length. 3245*bcb85aadSSteve Yin Refer to @ref _specialOffsets 3246*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3247*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleEditableText 3248*bcb85aadSSteve Yin methods. 3249*bcb85aadSSteve Yin @retval S_OK 3250*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3251*bcb85aadSSteve Yin @deprecated This function is available via the application's GUI. 3252*bcb85aadSSteve Yin */ 3253*bcb85aadSSteve Yin HRESULT pasteText 3254*bcb85aadSSteve Yin ( 3255*bcb85aadSSteve Yin [in] long offset 3256*bcb85aadSSteve Yin ); 3257*bcb85aadSSteve Yin 3258*bcb85aadSSteve Yin /** @brief Replaces text. 3259*bcb85aadSSteve Yin 3260*bcb85aadSSteve Yin The text between the two given indices is replaced by the specified 3261*bcb85aadSSteve Yin replacement string. This method is equivalent to calling first 3262*bcb85aadSSteve Yin IAccessibleEditableText::deleteText with the two indices and then 3263*bcb85aadSSteve Yin calling IAccessibleEditableText::insertText with the replacement text 3264*bcb85aadSSteve Yin at the start index. 3265*bcb85aadSSteve Yin 3266*bcb85aadSSteve Yin @param [in] startOffset 3267*bcb85aadSSteve Yin Start index of the text to be replaced. 3268*bcb85aadSSteve Yin The valid range is 0..length. 3269*bcb85aadSSteve Yin @param [in] endOffset 3270*bcb85aadSSteve Yin End index of the text to be replaced. 3271*bcb85aadSSteve Yin The valid range is 0..length. 3272*bcb85aadSSteve Yin @param [in] text 3273*bcb85aadSSteve Yin The Text that replaces the text between the given indices. 3274*bcb85aadSSteve Yin @retval S_OK 3275*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3276*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 3277*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3278*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleEditableText 3279*bcb85aadSSteve Yin methods. 3280*bcb85aadSSteve Yin */ 3281*bcb85aadSSteve Yin HRESULT replaceText 3282*bcb85aadSSteve Yin ( 3283*bcb85aadSSteve Yin [in] long startOffset, 3284*bcb85aadSSteve Yin [in] long endOffset, 3285*bcb85aadSSteve Yin [in] BSTR *text 3286*bcb85aadSSteve Yin ); 3287*bcb85aadSSteve Yin 3288*bcb85aadSSteve Yin /** @brief Replaces the attributes of a text range by the given set of attributes. 3289*bcb85aadSSteve Yin 3290*bcb85aadSSteve Yin Sets the attributes for the text between the two given indices. The old 3291*bcb85aadSSteve Yin attributes are replaced by the new list of attributes. 3292*bcb85aadSSteve Yin 3293*bcb85aadSSteve Yin @param [in] startOffset 3294*bcb85aadSSteve Yin Start index of the text whose attributes are modified. 3295*bcb85aadSSteve Yin The valid range is 0..length. 3296*bcb85aadSSteve Yin @param [in] endOffset 3297*bcb85aadSSteve Yin End index of the text whose attributes are modified. 3298*bcb85aadSSteve Yin The valid range is 0..length. 3299*bcb85aadSSteve Yin @param [in] attributes 3300*bcb85aadSSteve Yin Set of attributes that replaces the old list of attributes of 3301*bcb85aadSSteve Yin the specified text portion. 3302*bcb85aadSSteve Yin @retval S_OK 3303*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3304*bcb85aadSSteve Yin @note Refer to @ref _specialOffsets 3305*bcb85aadSSteve Yin "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" 3306*bcb85aadSSteve Yin for information about special offsets that can be used in %IAccessibleEditableText 3307*bcb85aadSSteve Yin methods. 3308*bcb85aadSSteve Yin */ 3309*bcb85aadSSteve Yin HRESULT setAttributes 3310*bcb85aadSSteve Yin ( 3311*bcb85aadSSteve Yin [in] long startOffset, 3312*bcb85aadSSteve Yin [in] long endOffset, 3313*bcb85aadSSteve Yin [in] BSTR *attributes 3314*bcb85aadSSteve Yin ); 3315*bcb85aadSSteve Yin} 3316*bcb85aadSSteve Yin 3317*bcb85aadSSteve Yin/************************************************************************* 3318*bcb85aadSSteve Yin * 3319*bcb85aadSSteve Yin * File Name (AccessibleHyperlink.idl) 3320*bcb85aadSSteve Yin * 3321*bcb85aadSSteve Yin * IAccessible2 IDL Specification 3322*bcb85aadSSteve Yin * 3323*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 3324*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 3325*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 3326*bcb85aadSSteve Yin * All rights reserved. 3327*bcb85aadSSteve Yin * 3328*bcb85aadSSteve Yin * 3329*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 3330*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 3331*bcb85aadSSteve Yin * are met: 3332*bcb85aadSSteve Yin * 3333*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 3334*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 3335*bcb85aadSSteve Yin * 3336*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 3337*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 3338*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 3339*bcb85aadSSteve Yin * provided with the distribution. 3340*bcb85aadSSteve Yin * 3341*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 3342*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 3343*bcb85aadSSteve Yin * derived from this software without specific prior written 3344*bcb85aadSSteve Yin * permission. 3345*bcb85aadSSteve Yin * 3346*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 3347*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 3348*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 3349*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 3350*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 3351*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3352*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 3353*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 3354*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3355*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3356*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 3357*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 3358*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3359*bcb85aadSSteve Yin * 3360*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 3361*bcb85aadSSteve Yin * BSD License" as published at: 3362*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 3363*bcb85aadSSteve Yin * 3364*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 3365*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 3366*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 3367*bcb85aadSSteve Yin * 3368*bcb85aadSSteve Yin ************************************************************************/ 3369*bcb85aadSSteve Yin 3370*bcb85aadSSteve Yin 3371*bcb85aadSSteve Yin 3372*bcb85aadSSteve Yin 3373*bcb85aadSSteve Yin 3374*bcb85aadSSteve Yin 3375*bcb85aadSSteve Yin/** @brief This interface represents hyperlinks. 3376*bcb85aadSSteve Yin 3377*bcb85aadSSteve Yin This interface represents a hyperlink associated with a single substring 3378*bcb85aadSSteve Yin of text or single non-text object. Non-text objects can have either a 3379*bcb85aadSSteve Yin single link or a collection of links such as when the non-text object is 3380*bcb85aadSSteve Yin an image map. 3381*bcb85aadSSteve Yin 3382*bcb85aadSSteve Yin Linked objects and anchors are implementation dependent. This interface is derived 3383*bcb85aadSSteve Yin from IAccessibleAction. IAccessibleAction::nActions is one greater than the 3384*bcb85aadSSteve Yin maximum value for the indices used with the methods of this interface. 3385*bcb85aadSSteve Yin 3386*bcb85aadSSteve Yin Furthermore, the object that implements this interface has to be connected 3387*bcb85aadSSteve Yin implicitly or explicitly with an object that implements IAccessibleText. 3388*bcb85aadSSteve Yin IAccessibleHyperlink::startIndex and IAccessibleHyperlink::endIndex are 3389*bcb85aadSSteve Yin indices with respect to the text exposed by IAccessibleText. 3390*bcb85aadSSteve Yin 3391*bcb85aadSSteve Yin This interface provides access to a single object which can have multiple actions. 3392*bcb85aadSSteve Yin An example is an image map which is an image with multiple links each of which is 3393*bcb85aadSSteve Yin associated with a separate non-overlapping area of the image. This interface could 3394*bcb85aadSSteve Yin also be applied to other kinds of objects with multiple actions such as "smart tags" 3395*bcb85aadSSteve Yin which are objects, typically strings, which have multiple actions such as 3396*bcb85aadSSteve Yin "Activate URI", "Bookmark URI", etc. 3397*bcb85aadSSteve Yin 3398*bcb85aadSSteve Yin An interesting use case is an image map where each area is associated with multiple 3399*bcb85aadSSteve Yin actions, e.g. an image map of smart tags. In this case you would have to implement 3400*bcb85aadSSteve Yin two levels of accessible hyperlinks. The first level hyperlinks would only implement 3401*bcb85aadSSteve Yin anchor and anchorTarget. The anchors would all reference the image object. The 3402*bcb85aadSSteve Yin anchorTargets would reference the second level accessible hyperlink objects. None 3403*bcb85aadSSteve Yin of the IAccessibleAction methods would be implemented on the first level hyperlink 3404*bcb85aadSSteve Yin objects. The second level hyperlink objects would implement the IAccessibleAction 3405*bcb85aadSSteve Yin methods. Their anchors would also reference the image object and their anchorTargets 3406*bcb85aadSSteve Yin would reference URLs or the objects that would be activated. 3407*bcb85aadSSteve Yin 3408*bcb85aadSSteve Yin This use case demonstrates that in some cases there is no need for IAccessibleHyperlink 3409*bcb85aadSSteve Yin to derive from IAccessibleAction. As a result it may be removed in a later version of 3410*bcb85aadSSteve Yin the IDL and it is suggested that implementations should not rely on the inheritance. 3411*bcb85aadSSteve Yin 3412*bcb85aadSSteve Yin*/ 3413*bcb85aadSSteve Yin[object, uuid(01C20F2B-3DD2-400f-949F-AD00BDAB1D41)] 3414*bcb85aadSSteve Yininterface IAccessibleHyperlink : IAccessibleAction 3415*bcb85aadSSteve Yin{ 3416*bcb85aadSSteve Yin 3417*bcb85aadSSteve Yin /** @brief Returns an object that represents the link anchor, as appropriate 3418*bcb85aadSSteve Yin for the link at the specified index. 3419*bcb85aadSSteve Yin @param [in] index 3420*bcb85aadSSteve Yin A 0 based index identifies the anchor when, as in the case of an image map, 3421*bcb85aadSSteve Yin there is more than one link represented by this object. The valid maximal 3422*bcb85aadSSteve Yin index is indicated by IAccessibleAction::nActions. 3423*bcb85aadSSteve Yin @param [out] anchor 3424*bcb85aadSSteve Yin This is an implementation dependent value. For example, for a text link this 3425*bcb85aadSSteve Yin method could return the substring of the containing string where the substring 3426*bcb85aadSSteve Yin is overridden with link behavior, and for an image link this method could return 3427*bcb85aadSSteve Yin an IUnknown VARIANT for IAccessibleImage. See the section about 3428*bcb85aadSSteve Yin @ref _variants "VARIANTs" for additional information. 3429*bcb85aadSSteve Yin @retval S_OK 3430*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3431*bcb85aadSSteve Yin */ 3432*bcb85aadSSteve Yin [propget] HRESULT anchor 3433*bcb85aadSSteve Yin ( 3434*bcb85aadSSteve Yin [in] long index, 3435*bcb85aadSSteve Yin [out, retval] VARIANT *anchor 3436*bcb85aadSSteve Yin ); 3437*bcb85aadSSteve Yin 3438*bcb85aadSSteve Yin /** @brief Returns an object representing the target of the link, as appropriate 3439*bcb85aadSSteve Yin for the link at the specified index. 3440*bcb85aadSSteve Yin @param [in] index 3441*bcb85aadSSteve Yin A 0 based index identifies the anchor when, as in the case of an image map, 3442*bcb85aadSSteve Yin there is more than one link represented by this object. The valid maximal 3443*bcb85aadSSteve Yin index is indicated by IAccessibleAction::nActions. 3444*bcb85aadSSteve Yin @param [out] anchorTarget 3445*bcb85aadSSteve Yin This is an implementation dependent value. For example this method could 3446*bcb85aadSSteve Yin return a BSTR VARIANT of the URI. Alternatively this method could return an 3447*bcb85aadSSteve Yin IUnknown VARIANT of a COM interface representing a target object to be 3448*bcb85aadSSteve Yin activated when the link is activated. See the section about 3449*bcb85aadSSteve Yin @ref _variants "VARIANTs" for additional information. 3450*bcb85aadSSteve Yin @retval S_OK 3451*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3452*bcb85aadSSteve Yin */ 3453*bcb85aadSSteve Yin [propget] HRESULT anchorTarget 3454*bcb85aadSSteve Yin ( 3455*bcb85aadSSteve Yin [in] long index, 3456*bcb85aadSSteve Yin [out, retval] VARIANT *anchorTarget 3457*bcb85aadSSteve Yin ); 3458*bcb85aadSSteve Yin 3459*bcb85aadSSteve Yin /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink starts. 3460*bcb85aadSSteve Yin 3461*bcb85aadSSteve Yin The returned value is related to the IAccessibleText interface of the object that 3462*bcb85aadSSteve Yin owns this hyperlink. 3463*bcb85aadSSteve Yin @param [out] index 3464*bcb85aadSSteve Yin @retval S_OK 3465*bcb85aadSSteve Yin */ 3466*bcb85aadSSteve Yin [propget] HRESULT startIndex 3467*bcb85aadSSteve Yin ( 3468*bcb85aadSSteve Yin [out, retval] long *index 3469*bcb85aadSSteve Yin ); 3470*bcb85aadSSteve Yin 3471*bcb85aadSSteve Yin /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink ends. 3472*bcb85aadSSteve Yin 3473*bcb85aadSSteve Yin The returned value is related to the IAccessibleText interface of the object that 3474*bcb85aadSSteve Yin owns this hyperlink. The character at the index is not part of the hypertext. 3475*bcb85aadSSteve Yin @param [out] index 3476*bcb85aadSSteve Yin @retval S_OK 3477*bcb85aadSSteve Yin */ 3478*bcb85aadSSteve Yin [propget] HRESULT endIndex 3479*bcb85aadSSteve Yin ( 3480*bcb85aadSSteve Yin [out, retval] long *index 3481*bcb85aadSSteve Yin ); 3482*bcb85aadSSteve Yin 3483*bcb85aadSSteve Yin /** @brief Returns whether the target object referenced by this link is still valid. 3484*bcb85aadSSteve Yin 3485*bcb85aadSSteve Yin This is a volatile state that may change without sending an appropriate event. 3486*bcb85aadSSteve Yin Returns TRUE if the referenced target is still valid and FALSE otherwise. 3487*bcb85aadSSteve Yin 3488*bcb85aadSSteve Yin This has also been used to indicate whether or not the URI of the anchorTarget 3489*bcb85aadSSteve Yin is malformed. 3490*bcb85aadSSteve Yin 3491*bcb85aadSSteve Yin @param [out] valid 3492*bcb85aadSSteve Yin If false, one or more of the object's links are invalid. 3493*bcb85aadSSteve Yin If true, all of the object's links are valid. 3494*bcb85aadSSteve Yin @retval S_OK 3495*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is FALSE 3496*bcb85aadSSteve Yin @note This method is not being used, is deprecated, and should not be implemented or 3497*bcb85aadSSteve Yin used. It is likely that this method will be removed in a later version of the IDL. 3498*bcb85aadSSteve Yin */ 3499*bcb85aadSSteve Yin [propget] HRESULT valid 3500*bcb85aadSSteve Yin ( 3501*bcb85aadSSteve Yin [out, retval] boolean *valid 3502*bcb85aadSSteve Yin ); 3503*bcb85aadSSteve Yin} 3504*bcb85aadSSteve Yin/************************************************************************* 3505*bcb85aadSSteve Yin * 3506*bcb85aadSSteve Yin * File Name (AccessibleHypertext.idl) 3507*bcb85aadSSteve Yin * 3508*bcb85aadSSteve Yin * IAccessible2 IDL Specification 3509*bcb85aadSSteve Yin * 3510*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 3511*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 3512*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 3513*bcb85aadSSteve Yin * All rights reserved. 3514*bcb85aadSSteve Yin * 3515*bcb85aadSSteve Yin * 3516*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 3517*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 3518*bcb85aadSSteve Yin * are met: 3519*bcb85aadSSteve Yin * 3520*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 3521*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 3522*bcb85aadSSteve Yin * 3523*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 3524*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 3525*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 3526*bcb85aadSSteve Yin * provided with the distribution. 3527*bcb85aadSSteve Yin * 3528*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 3529*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 3530*bcb85aadSSteve Yin * derived from this software without specific prior written 3531*bcb85aadSSteve Yin * permission. 3532*bcb85aadSSteve Yin * 3533*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 3534*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 3535*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 3536*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 3537*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 3538*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3539*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 3540*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 3541*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3542*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3543*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 3544*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 3545*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3546*bcb85aadSSteve Yin * 3547*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 3548*bcb85aadSSteve Yin * BSD License" as published at: 3549*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 3550*bcb85aadSSteve Yin * 3551*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 3552*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 3553*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 3554*bcb85aadSSteve Yin * 3555*bcb85aadSSteve Yin ************************************************************************/ 3556*bcb85aadSSteve Yin 3557*bcb85aadSSteve Yin 3558*bcb85aadSSteve Yin 3559*bcb85aadSSteve Yin 3560*bcb85aadSSteve Yin 3561*bcb85aadSSteve Yin 3562*bcb85aadSSteve Yin 3563*bcb85aadSSteve Yin/** @brief This interface exposes information about hypertext in a document. 3564*bcb85aadSSteve Yin 3565*bcb85aadSSteve Yin The %IAccessibleHypertext interface is the main interface to expose 3566*bcb85aadSSteve Yin hyperlinks in a document, typically a text document, that are used 3567*bcb85aadSSteve Yin to reference other documents. A typical implementation is to implement 3568*bcb85aadSSteve Yin this interface on the smallest text object such as a paragraph of text. 3569*bcb85aadSSteve Yin*/ 3570*bcb85aadSSteve Yin[object, uuid(6B4F8BBF-F1F2-418a-B35E-A195BC4103B9)] 3571*bcb85aadSSteve Yininterface IAccessibleHypertext : IAccessibleText 3572*bcb85aadSSteve Yin{ 3573*bcb85aadSSteve Yin 3574*bcb85aadSSteve Yin /** @brief Returns the number of links and link groups contained within this hypertext 3575*bcb85aadSSteve Yin paragraph. 3576*bcb85aadSSteve Yin @param [out] hyperlinkCount 3577*bcb85aadSSteve Yin The number of links and link groups within this hypertext paragraph. 3578*bcb85aadSSteve Yin Returns 0 if there is no link. 3579*bcb85aadSSteve Yin @retval S_OK 3580*bcb85aadSSteve Yin */ 3581*bcb85aadSSteve Yin [propget] HRESULT nHyperlinks 3582*bcb85aadSSteve Yin ( 3583*bcb85aadSSteve Yin [out, retval] long *hyperlinkCount 3584*bcb85aadSSteve Yin ); 3585*bcb85aadSSteve Yin 3586*bcb85aadSSteve Yin /** @brief Returns the specified link. 3587*bcb85aadSSteve Yin 3588*bcb85aadSSteve Yin The returned IAccessibleHyperlink object encapsulates the hyperlink and 3589*bcb85aadSSteve Yin provides several kinds of information describing it. 3590*bcb85aadSSteve Yin @param [in] index 3591*bcb85aadSSteve Yin This 0 based index specifies the hyperlink to return. 3592*bcb85aadSSteve Yin @param [out] hyperlink 3593*bcb85aadSSteve Yin If the given index is valid, i.e. lies in the interval from 0 to the number 3594*bcb85aadSSteve Yin of links minus one, a reference to the specified hyperlink object is returned. 3595*bcb85aadSSteve Yin If the index is invalid then a NULL pointer is returned. 3596*bcb85aadSSteve Yin @retval S_OK 3597*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3598*bcb85aadSSteve Yin */ 3599*bcb85aadSSteve Yin [propget] HRESULT hyperlink 3600*bcb85aadSSteve Yin ( 3601*bcb85aadSSteve Yin [in] long index, 3602*bcb85aadSSteve Yin [out, retval] IAccessibleHyperlink **hyperlink 3603*bcb85aadSSteve Yin ); 3604*bcb85aadSSteve Yin 3605*bcb85aadSSteve Yin /** @brief Returns the index of the hyperlink that is associated with this character index. 3606*bcb85aadSSteve Yin 3607*bcb85aadSSteve Yin This is the case when a link spans the given character index. 3608*bcb85aadSSteve Yin @param [in] charIndex 3609*bcb85aadSSteve Yin A 0 based index of the character for which to return the link index. If 3610*bcb85aadSSteve Yin IAccessibleText is used to represent the text containing the link, then the 3611*bcb85aadSSteve Yin character index is only valid if it is greater than or equal to zero and 3612*bcb85aadSSteve Yin lower than the number of characters in the text. 3613*bcb85aadSSteve Yin @param [out] hyperlinkIndex 3614*bcb85aadSSteve Yin Returns the 0 based index of the hyperlink that is associated with this 3615*bcb85aadSSteve Yin character index, or -1 if charIndex is not on a link. 3616*bcb85aadSSteve Yin @retval S_OK 3617*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is -1 3618*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 3619*bcb85aadSSteve Yin */ 3620*bcb85aadSSteve Yin [propget] HRESULT hyperlinkIndex 3621*bcb85aadSSteve Yin ( 3622*bcb85aadSSteve Yin [in] long charIndex, 3623*bcb85aadSSteve Yin [out, retval] long *hyperlinkIndex 3624*bcb85aadSSteve Yin ); 3625*bcb85aadSSteve Yin 3626*bcb85aadSSteve Yin} 3627*bcb85aadSSteve Yin/************************************************************************* 3628*bcb85aadSSteve Yin * 3629*bcb85aadSSteve Yin * File Name (AccessibleHypertext2.idl) 3630*bcb85aadSSteve Yin * 3631*bcb85aadSSteve Yin * IAccessible2 IDL Specification 3632*bcb85aadSSteve Yin * 3633*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 3634*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 3635*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 3636*bcb85aadSSteve Yin * All rights reserved. 3637*bcb85aadSSteve Yin * 3638*bcb85aadSSteve Yin * 3639*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 3640*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 3641*bcb85aadSSteve Yin * are met: 3642*bcb85aadSSteve Yin * 3643*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 3644*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 3645*bcb85aadSSteve Yin * 3646*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 3647*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 3648*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 3649*bcb85aadSSteve Yin * provided with the distribution. 3650*bcb85aadSSteve Yin * 3651*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 3652*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 3653*bcb85aadSSteve Yin * derived from this software without specific prior written 3654*bcb85aadSSteve Yin * permission. 3655*bcb85aadSSteve Yin * 3656*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 3657*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 3658*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 3659*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 3660*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 3661*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3662*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 3663*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 3664*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3665*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3666*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 3667*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 3668*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3669*bcb85aadSSteve Yin * 3670*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 3671*bcb85aadSSteve Yin * BSD License" as published at: 3672*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 3673*bcb85aadSSteve Yin * 3674*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 3675*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 3676*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 3677*bcb85aadSSteve Yin * 3678*bcb85aadSSteve Yin ************************************************************************/ 3679*bcb85aadSSteve Yin 3680*bcb85aadSSteve Yin 3681*bcb85aadSSteve Yin 3682*bcb85aadSSteve Yin 3683*bcb85aadSSteve Yin 3684*bcb85aadSSteve Yin 3685*bcb85aadSSteve Yin 3686*bcb85aadSSteve Yin/** @brief This interface exposes information about hypertext in a document. 3687*bcb85aadSSteve Yin 3688*bcb85aadSSteve Yin The %IAccessibleHypertext2 interface extends the functinality of the 3689*bcb85aadSSteve Yin %IAccessibleHypertext inteface. 3690*bcb85aadSSteve Yin*/ 3691*bcb85aadSSteve Yin[object, uuid(CF64D89F-8287-4B44-8501-A827453A6077)] 3692*bcb85aadSSteve Yininterface IAccessibleHypertext2 : IAccessibleHypertext 3693*bcb85aadSSteve Yin{ 3694*bcb85aadSSteve Yin 3695*bcb85aadSSteve Yin /** @brief Returns the links for this object. 3696*bcb85aadSSteve Yin 3697*bcb85aadSSteve Yin The returned IAccessibleHyperlink objects encapsulate the hyperlink and 3698*bcb85aadSSteve Yin provides several kinds of information describing it. 3699*bcb85aadSSteve Yin 3700*bcb85aadSSteve Yin @param [out] hyperlinks 3701*bcb85aadSSteve Yin This array is allocated by the server. The client must free it with CoTaskMemFree. 3702*bcb85aadSSteve Yin @param [out] nHyperlinks 3703*bcb85aadSSteve Yin The number of links returned; the size of the returned array. 3704*bcb85aadSSteve Yin @retval S_OK 3705*bcb85aadSSteve Yin @retval S_FALSE if there are no links, [out] values are NULL and 0 respectively 3706*bcb85aadSSteve Yin */ 3707*bcb85aadSSteve Yin [propget] HRESULT hyperlinks 3708*bcb85aadSSteve Yin ( 3709*bcb85aadSSteve Yin [out, size_is(,*nHyperlinks)] IAccessibleHyperlink ***hyperlinks, 3710*bcb85aadSSteve Yin [out, retval] long *nHyperlinks 3711*bcb85aadSSteve Yin ); 3712*bcb85aadSSteve Yin 3713*bcb85aadSSteve Yin} 3714*bcb85aadSSteve Yin/************************************************************************* 3715*bcb85aadSSteve Yin * 3716*bcb85aadSSteve Yin * File Name (AccessibleTable.idl) 3717*bcb85aadSSteve Yin * 3718*bcb85aadSSteve Yin * IAccessible2 IDL Specification 3719*bcb85aadSSteve Yin * 3720*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 3721*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 3722*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 3723*bcb85aadSSteve Yin * All rights reserved. 3724*bcb85aadSSteve Yin * 3725*bcb85aadSSteve Yin * 3726*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 3727*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 3728*bcb85aadSSteve Yin * are met: 3729*bcb85aadSSteve Yin * 3730*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 3731*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 3732*bcb85aadSSteve Yin * 3733*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 3734*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 3735*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 3736*bcb85aadSSteve Yin * provided with the distribution. 3737*bcb85aadSSteve Yin * 3738*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 3739*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 3740*bcb85aadSSteve Yin * derived from this software without specific prior written 3741*bcb85aadSSteve Yin * permission. 3742*bcb85aadSSteve Yin * 3743*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 3744*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 3745*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 3746*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 3747*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 3748*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3749*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 3750*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 3751*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3752*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3753*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 3754*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 3755*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3756*bcb85aadSSteve Yin * 3757*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 3758*bcb85aadSSteve Yin * BSD License" as published at: 3759*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 3760*bcb85aadSSteve Yin * 3761*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 3762*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 3763*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 3764*bcb85aadSSteve Yin * 3765*bcb85aadSSteve Yin ************************************************************************/ 3766*bcb85aadSSteve Yin 3767*bcb85aadSSteve Yin 3768*bcb85aadSSteve Yin 3769*bcb85aadSSteve Yin 3770*bcb85aadSSteve Yin 3771*bcb85aadSSteve Yin 3772*bcb85aadSSteve Yin 3773*bcb85aadSSteve Yin/** @brief This interface gives access to a two-dimensional table. 3774*bcb85aadSSteve Yin 3775*bcb85aadSSteve Yin Typically all accessible objects that represent cells or cell-clusters of a table 3776*bcb85aadSSteve Yin will be at the same time children of the table. In this case IAccessible2::indexInParent 3777*bcb85aadSSteve Yin will return the child index which then can be used when calling IAccessibleTable::rowIndex 3778*bcb85aadSSteve Yin and IAccessibleTable::columnIndex. 3779*bcb85aadSSteve Yin 3780*bcb85aadSSteve Yin However, in some cases that kind of implementation will not be possible. When 3781*bcb85aadSSteve Yin the table cells are not direct children of a table, the object representing 3782*bcb85aadSSteve Yin the cell can define a "table-cell-index" object attribute identifying the 0 3783*bcb85aadSSteve Yin based table cell index. This object attribute is obtained by parsing the 3784*bcb85aadSSteve Yin attribute string returned by IAccessible2::attributes. The "table-cell-index" 3785*bcb85aadSSteve Yin attribute can be used just like a child index of the typical case. ATs should 3786*bcb85aadSSteve Yin first test for the presence of the "table-cell-index" attribute and if it is not 3787*bcb85aadSSteve Yin present then IAccessible2::indexInParent can be used as in the typical case 3788*bcb85aadSSteve Yin where cells are direct children of the table. 3789*bcb85aadSSteve Yin 3790*bcb85aadSSteve Yin The range of valid coordinates for this interface are implementation dependent. 3791*bcb85aadSSteve Yin However, that range includes at least the intervals from the from the first row 3792*bcb85aadSSteve Yin or column with the index 0 up to the last (but not including) used row or column 3793*bcb85aadSSteve Yin as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns. 3794*bcb85aadSSteve Yin 3795*bcb85aadSSteve Yin Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell 3796*bcb85aadSSteve Yin rather than this interface. 3797*bcb85aadSSteve Yin*/ 3798*bcb85aadSSteve Yin[object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)] 3799*bcb85aadSSteve Yininterface IAccessibleTable : IUnknown 3800*bcb85aadSSteve Yin{ 3801*bcb85aadSSteve Yin 3802*bcb85aadSSteve Yin /** @brief Returns the accessible object at the specified row and column in 3803*bcb85aadSSteve Yin the table. This object could be an IAccessible or an IAccessible2. 3804*bcb85aadSSteve Yin @param [in] row 3805*bcb85aadSSteve Yin The 0 based row index for which to retrieve the cell. 3806*bcb85aadSSteve Yin @param [in] column 3807*bcb85aadSSteve Yin The 0 based column index for which to retrieve the cell. 3808*bcb85aadSSteve Yin @param [out] accessible 3809*bcb85aadSSteve Yin If both row and column index are valid then the corresponding accessible 3810*bcb85aadSSteve Yin object is returned that represents the requested cell regardless of whether 3811*bcb85aadSSteve Yin the cell is currently visible (on the screen). 3812*bcb85aadSSteve Yin @retval S_OK 3813*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is NULL 3814*bcb85aadSSteve Yin */ 3815*bcb85aadSSteve Yin [propget] HRESULT accessibleAt 3816*bcb85aadSSteve Yin ( 3817*bcb85aadSSteve Yin [in] long row, 3818*bcb85aadSSteve Yin [in] long column, 3819*bcb85aadSSteve Yin [out, retval] IUnknown **accessible 3820*bcb85aadSSteve Yin ); 3821*bcb85aadSSteve Yin 3822*bcb85aadSSteve Yin /** @brief Returns the caption for the table. The returned object could be 3823*bcb85aadSSteve Yin an IAccessible or an IAccessible2. 3824*bcb85aadSSteve Yin @param [out] accessible 3825*bcb85aadSSteve Yin If the table has a caption then a reference to it is returned, else a NULL 3826*bcb85aadSSteve Yin pointer is returned. 3827*bcb85aadSSteve Yin @retval S_OK 3828*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 3829*bcb85aadSSteve Yin */ 3830*bcb85aadSSteve Yin [propget] HRESULT caption 3831*bcb85aadSSteve Yin ( 3832*bcb85aadSSteve Yin [out, retval] IUnknown **accessible 3833*bcb85aadSSteve Yin ); 3834*bcb85aadSSteve Yin 3835*bcb85aadSSteve Yin /** @brief Translates the given row and column indexes into the corresponding cell index. 3836*bcb85aadSSteve Yin @param [in] rowIndex 3837*bcb85aadSSteve Yin 0 based row index for the cell. 3838*bcb85aadSSteve Yin @param [in] columnIndex 3839*bcb85aadSSteve Yin 0 based column index for the cell. 3840*bcb85aadSSteve Yin @param [out] cellIndex 3841*bcb85aadSSteve Yin Returns the 0 based index of the cell at the specified row and column indexes. 3842*bcb85aadSSteve Yin @retval S_OK 3843*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is 0 3844*bcb85aadSSteve Yin @note The returned value is not necessarily a child index of the immediate parent. 3845*bcb85aadSSteve Yin In cases where the table cells are not direct children of the table the index 3846*bcb85aadSSteve Yin is actually the cell index, i.e. conceptually it's an index into a one dimensional 3847*bcb85aadSSteve Yin array of cells laid out in row order. 3848*bcb85aadSSteve Yin */ 3849*bcb85aadSSteve Yin [propget] HRESULT childIndex 3850*bcb85aadSSteve Yin ( 3851*bcb85aadSSteve Yin [in] long rowIndex, 3852*bcb85aadSSteve Yin [in] long columnIndex, 3853*bcb85aadSSteve Yin [out, retval] long *cellIndex 3854*bcb85aadSSteve Yin ); 3855*bcb85aadSSteve Yin 3856*bcb85aadSSteve Yin /** @brief Returns the description text of the specified column in the table. 3857*bcb85aadSSteve Yin @param [in] column 3858*bcb85aadSSteve Yin The 0 based index of the column for which to retrieve the description. 3859*bcb85aadSSteve Yin @param [out] description 3860*bcb85aadSSteve Yin Returns the description text of the specified column in the table if such a 3861*bcb85aadSSteve Yin description exists. Otherwise a NULL pointer is returned. 3862*bcb85aadSSteve Yin @retval S_OK 3863*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 3864*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is NULL 3865*bcb85aadSSteve Yin */ 3866*bcb85aadSSteve Yin [propget] HRESULT columnDescription 3867*bcb85aadSSteve Yin ( 3868*bcb85aadSSteve Yin [in] long column, 3869*bcb85aadSSteve Yin [out, retval] BSTR *description 3870*bcb85aadSSteve Yin ); 3871*bcb85aadSSteve Yin 3872*bcb85aadSSteve Yin /** @brief Returns the number of columns occupied by the accessible object 3873*bcb85aadSSteve Yin at the specified row and column in the table. 3874*bcb85aadSSteve Yin 3875*bcb85aadSSteve Yin The result is greater than 1 if the specified cell spans multiple columns. 3876*bcb85aadSSteve Yin @param [in] row 3877*bcb85aadSSteve Yin 0 based row index of the accessible for which to return the column extent. 3878*bcb85aadSSteve Yin @param [in] column 3879*bcb85aadSSteve Yin 0 based column index of the accessible for which to return the column extent. 3880*bcb85aadSSteve Yin @param [out] nColumnsSpanned 3881*bcb85aadSSteve Yin Returns the 1 based column extent of the specified cell. 3882*bcb85aadSSteve Yin @retval S_OK 3883*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is 0 3884*bcb85aadSSteve Yin */ 3885*bcb85aadSSteve Yin [propget] HRESULT columnExtentAt 3886*bcb85aadSSteve Yin ( 3887*bcb85aadSSteve Yin [in] long row, 3888*bcb85aadSSteve Yin [in] long column, 3889*bcb85aadSSteve Yin [out, retval] long *nColumnsSpanned 3890*bcb85aadSSteve Yin ); 3891*bcb85aadSSteve Yin 3892*bcb85aadSSteve Yin /** @brief Returns the column headers as an %IAccessibleTable object. 3893*bcb85aadSSteve Yin 3894*bcb85aadSSteve Yin Content and size of the returned table are implementation dependent. 3895*bcb85aadSSteve Yin @param [out] accessibleTable 3896*bcb85aadSSteve Yin The column header 3897*bcb85aadSSteve Yin @param [out] startingRowIndex 3898*bcb85aadSSteve Yin The 0 based row index where the header starts, usually 0. 3899*bcb85aadSSteve Yin @retval S_OK 3900*bcb85aadSSteve Yin @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively 3901*bcb85aadSSteve Yin */ 3902*bcb85aadSSteve Yin [propget] HRESULT columnHeader 3903*bcb85aadSSteve Yin ( 3904*bcb85aadSSteve Yin [out] IAccessibleTable **accessibleTable, 3905*bcb85aadSSteve Yin [out, retval] long *startingRowIndex 3906*bcb85aadSSteve Yin ); 3907*bcb85aadSSteve Yin 3908*bcb85aadSSteve Yin /** @brief Translates the given cell index into the corresponding column index. 3909*bcb85aadSSteve Yin @param [in] cellIndex 3910*bcb85aadSSteve Yin 0 based index of the cell in the parent or closest ancestor table. Typically this 3911*bcb85aadSSteve Yin is the value returned from IAccessible2::indexInParent, but in the case where the 3912*bcb85aadSSteve Yin table cells are not direct children of the table this is the cell index specified 3913*bcb85aadSSteve Yin by the "table-cell-index" object attribute obtained from parsing the attributes 3914*bcb85aadSSteve Yin string returned by calling IAccessible2::attributes on the cell object. 3915*bcb85aadSSteve Yin @param [out] columnIndex 3916*bcb85aadSSteve Yin Returns the 0 based column index of the cell of the specified child or the index of 3917*bcb85aadSSteve Yin the first column if the child spans multiple columns. 3918*bcb85aadSSteve Yin @retval S_OK 3919*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is 0 3920*bcb85aadSSteve Yin */ 3921*bcb85aadSSteve Yin [propget] HRESULT columnIndex 3922*bcb85aadSSteve Yin ( 3923*bcb85aadSSteve Yin [in] long cellIndex, 3924*bcb85aadSSteve Yin [out, retval] long *columnIndex 3925*bcb85aadSSteve Yin ); 3926*bcb85aadSSteve Yin 3927*bcb85aadSSteve Yin /** @brief Returns the total number of columns in table 3928*bcb85aadSSteve Yin @param [out] columnCount 3929*bcb85aadSSteve Yin Number of columns in table (including columns outside the current viewport) 3930*bcb85aadSSteve Yin @retval S_OK 3931*bcb85aadSSteve Yin */ 3932*bcb85aadSSteve Yin [propget] HRESULT nColumns 3933*bcb85aadSSteve Yin ( 3934*bcb85aadSSteve Yin [out, retval] long *columnCount 3935*bcb85aadSSteve Yin ); 3936*bcb85aadSSteve Yin 3937*bcb85aadSSteve Yin /** @brief Returns the total number of rows in table 3938*bcb85aadSSteve Yin @param [out] rowCount 3939*bcb85aadSSteve Yin Number of rows in table (including rows outside the current viewport) 3940*bcb85aadSSteve Yin @retval S_OK 3941*bcb85aadSSteve Yin */ 3942*bcb85aadSSteve Yin [propget] HRESULT nRows 3943*bcb85aadSSteve Yin ( 3944*bcb85aadSSteve Yin [out, retval] long *rowCount 3945*bcb85aadSSteve Yin ); 3946*bcb85aadSSteve Yin 3947*bcb85aadSSteve Yin /** @brief Returns the total number of selected cells 3948*bcb85aadSSteve Yin @param [out] cellCount 3949*bcb85aadSSteve Yin Number of cells currently selected 3950*bcb85aadSSteve Yin @retval S_OK 3951*bcb85aadSSteve Yin */ 3952*bcb85aadSSteve Yin [propget] HRESULT nSelectedChildren 3953*bcb85aadSSteve Yin ( 3954*bcb85aadSSteve Yin [out, retval] long *cellCount 3955*bcb85aadSSteve Yin ); 3956*bcb85aadSSteve Yin 3957*bcb85aadSSteve Yin /** @brief Returns the total number of selected columns 3958*bcb85aadSSteve Yin @param [out] columnCount 3959*bcb85aadSSteve Yin Number of columns currently selected 3960*bcb85aadSSteve Yin @retval S_OK 3961*bcb85aadSSteve Yin */ 3962*bcb85aadSSteve Yin [propget] HRESULT nSelectedColumns 3963*bcb85aadSSteve Yin ( 3964*bcb85aadSSteve Yin [out, retval] long *columnCount 3965*bcb85aadSSteve Yin ); 3966*bcb85aadSSteve Yin 3967*bcb85aadSSteve Yin /** @brief Returns the total number of selected rows 3968*bcb85aadSSteve Yin @param [out] rowCount 3969*bcb85aadSSteve Yin Number of rows currently selected 3970*bcb85aadSSteve Yin @retval S_OK 3971*bcb85aadSSteve Yin */ 3972*bcb85aadSSteve Yin [propget] HRESULT nSelectedRows 3973*bcb85aadSSteve Yin ( 3974*bcb85aadSSteve Yin [out, retval] long *rowCount 3975*bcb85aadSSteve Yin ); 3976*bcb85aadSSteve Yin 3977*bcb85aadSSteve Yin /** @brief Returns the description text of the specified row in the table. 3978*bcb85aadSSteve Yin @param [in] row 3979*bcb85aadSSteve Yin The 0 based index of the row for which to retrieve the description. 3980*bcb85aadSSteve Yin @param [out] description 3981*bcb85aadSSteve Yin Returns the description text of the specified row in the table if such a 3982*bcb85aadSSteve Yin description exists. Otherwise a NULL pointer is returned. 3983*bcb85aadSSteve Yin @retval S_OK 3984*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 3985*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is NULL 3986*bcb85aadSSteve Yin */ 3987*bcb85aadSSteve Yin [propget] HRESULT rowDescription 3988*bcb85aadSSteve Yin ( 3989*bcb85aadSSteve Yin [in] long row, 3990*bcb85aadSSteve Yin [out, retval] BSTR *description 3991*bcb85aadSSteve Yin ); 3992*bcb85aadSSteve Yin 3993*bcb85aadSSteve Yin /** @brief Returns the number of rows occupied by the accessible object 3994*bcb85aadSSteve Yin at the specified row and column in the table. 3995*bcb85aadSSteve Yin 3996*bcb85aadSSteve Yin The result is greater than 1 if the specified cell spans multiple rows. 3997*bcb85aadSSteve Yin @param [in] row 3998*bcb85aadSSteve Yin 0 based row index of the accessible for which to return the row extent. 3999*bcb85aadSSteve Yin @param [in] column 4000*bcb85aadSSteve Yin 0 based column index of the accessible for which to return the row extent. 4001*bcb85aadSSteve Yin @param [out] nRowsSpanned 4002*bcb85aadSSteve Yin Returns the row extent of the specified cell. 4003*bcb85aadSSteve Yin @retval S_OK 4004*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is 0 4005*bcb85aadSSteve Yin */ 4006*bcb85aadSSteve Yin [propget] HRESULT rowExtentAt 4007*bcb85aadSSteve Yin ( 4008*bcb85aadSSteve Yin [in] long row, 4009*bcb85aadSSteve Yin [in] long column, 4010*bcb85aadSSteve Yin [out, retval] long *nRowsSpanned 4011*bcb85aadSSteve Yin ); 4012*bcb85aadSSteve Yin 4013*bcb85aadSSteve Yin /** @brief Returns the row headers as an %IAccessibleTable object. 4014*bcb85aadSSteve Yin 4015*bcb85aadSSteve Yin Content and size of the returned table are implementation dependent. 4016*bcb85aadSSteve Yin @param [out] accessibleTable 4017*bcb85aadSSteve Yin The row header. 4018*bcb85aadSSteve Yin @param [out] startingColumnIndex 4019*bcb85aadSSteve Yin The 0 based column index where the header starts, usually 0. 4020*bcb85aadSSteve Yin @retval S_OK 4021*bcb85aadSSteve Yin @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively 4022*bcb85aadSSteve Yin */ 4023*bcb85aadSSteve Yin [propget] HRESULT rowHeader 4024*bcb85aadSSteve Yin ( 4025*bcb85aadSSteve Yin [out] IAccessibleTable **accessibleTable, 4026*bcb85aadSSteve Yin [out, retval] long *startingColumnIndex 4027*bcb85aadSSteve Yin ); 4028*bcb85aadSSteve Yin 4029*bcb85aadSSteve Yin /** @brief Translates the given cell index into a row index. 4030*bcb85aadSSteve Yin @param [in] cellIndex 4031*bcb85aadSSteve Yin 0 based index of the cell in the parent or closest ancestor table. Typically this 4032*bcb85aadSSteve Yin is the value returned from IAccessible2::indexInParent, but in the case where the 4033*bcb85aadSSteve Yin table cells are not direct children of the table this is the cell index specified 4034*bcb85aadSSteve Yin by the "table-cell-index" object attribute obtained from parsing the attributes 4035*bcb85aadSSteve Yin string returned by calling IAccessible2::attributes on the cell object. 4036*bcb85aadSSteve Yin @param [out] rowIndex 4037*bcb85aadSSteve Yin 0 based row index 4038*bcb85aadSSteve Yin @retval S_OK 4039*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is 0 4040*bcb85aadSSteve Yin */ 4041*bcb85aadSSteve Yin [propget] HRESULT rowIndex 4042*bcb85aadSSteve Yin ( 4043*bcb85aadSSteve Yin [in] long cellIndex, 4044*bcb85aadSSteve Yin [out, retval] long *rowIndex 4045*bcb85aadSSteve Yin ); 4046*bcb85aadSSteve Yin 4047*bcb85aadSSteve Yin /** @brief Returns a list of cell indexes currently selected (0 based). 4048*bcb85aadSSteve Yin @param [in] maxChildren 4049*bcb85aadSSteve Yin This parameter is ignored. Refer to @ref _arrayConsideration 4050*bcb85aadSSteve Yin "Special Consideration when using Arrays" for more details. 4051*bcb85aadSSteve Yin @param [out] children 4052*bcb85aadSSteve Yin An array of cell indexes of selected cells (each index is 0 based), 4053*bcb85aadSSteve Yin allocated by the server. The client must free it with CoTaskMemFree. 4054*bcb85aadSSteve Yin @param [out] nChildren 4055*bcb85aadSSteve Yin The number of cell indexes returned; the size of the returned array. 4056*bcb85aadSSteve Yin @retval S_OK 4057*bcb85aadSSteve Yin @retval S_FALSE if there are none, [out] values are NULL and 0 respectively 4058*bcb85aadSSteve Yin */ 4059*bcb85aadSSteve Yin [propget] HRESULT selectedChildren 4060*bcb85aadSSteve Yin ( 4061*bcb85aadSSteve Yin [in] long maxChildren, 4062*bcb85aadSSteve Yin [out, size_is(,maxChildren), length_is(,*nChildren)] long **children, 4063*bcb85aadSSteve Yin [out, retval] long *nChildren 4064*bcb85aadSSteve Yin ); 4065*bcb85aadSSteve Yin 4066*bcb85aadSSteve Yin /** @brief Returns a list of column indexes currently selected (0 based). 4067*bcb85aadSSteve Yin @param [in] maxColumns 4068*bcb85aadSSteve Yin This parameter is ignored. Refer to @ref _arrayConsideration 4069*bcb85aadSSteve Yin "Special Consideration when using Arrays" for more details. 4070*bcb85aadSSteve Yin @param [out] columns 4071*bcb85aadSSteve Yin An array of column indexes of selected columns (each index is 0 based), allocated 4072*bcb85aadSSteve Yin by the server. The client must free it with CoTaskMemFree. 4073*bcb85aadSSteve Yin @param [out] nColumns 4074*bcb85aadSSteve Yin The number of column indexes returned; the size of the returned array. 4075*bcb85aadSSteve Yin @retval S_OK 4076*bcb85aadSSteve Yin @retval S_FALSE if there are none, [out] values are NULL and 0 respectively 4077*bcb85aadSSteve Yin */ 4078*bcb85aadSSteve Yin [propget] HRESULT selectedColumns 4079*bcb85aadSSteve Yin ( 4080*bcb85aadSSteve Yin [in] long maxColumns, 4081*bcb85aadSSteve Yin [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns, 4082*bcb85aadSSteve Yin [out, retval] long *nColumns 4083*bcb85aadSSteve Yin ); 4084*bcb85aadSSteve Yin 4085*bcb85aadSSteve Yin /** @brief Returns a list of row indexes currently selected (0 based). 4086*bcb85aadSSteve Yin @param [in] maxRows 4087*bcb85aadSSteve Yin This parameter is ignored. Refer to @ref _arrayConsideration 4088*bcb85aadSSteve Yin "Special Consideration when using Arrays" for more details. 4089*bcb85aadSSteve Yin @param [out] rows 4090*bcb85aadSSteve Yin An array of row indexes of selected rows (each index is 0 based), allocated 4091*bcb85aadSSteve Yin by the server. The client must free it with CoTaskMemFree. 4092*bcb85aadSSteve Yin @param [out] nRows 4093*bcb85aadSSteve Yin The number of row indexes returned; the size of the returned array. 4094*bcb85aadSSteve Yin @retval S_OK 4095*bcb85aadSSteve Yin @retval S_FALSE if there are none, [out] values are NULL and 0 respectively 4096*bcb85aadSSteve Yin */ 4097*bcb85aadSSteve Yin [propget] HRESULT selectedRows 4098*bcb85aadSSteve Yin ( 4099*bcb85aadSSteve Yin [in] long maxRows, 4100*bcb85aadSSteve Yin [out, size_is(,maxRows), length_is(,*nRows)] long **rows, 4101*bcb85aadSSteve Yin [out, retval] long *nRows 4102*bcb85aadSSteve Yin ); 4103*bcb85aadSSteve Yin 4104*bcb85aadSSteve Yin /** @brief Returns the summary description of the table. The returned object could be 4105*bcb85aadSSteve Yin an IAccessible or an IAccessible2. 4106*bcb85aadSSteve Yin @param [out] accessible 4107*bcb85aadSSteve Yin Returns a reference to an implementation dependent accessible object 4108*bcb85aadSSteve Yin representing the table's summary or a NULL pointer if the table 4109*bcb85aadSSteve Yin does not support a summary. 4110*bcb85aadSSteve Yin @retval S_OK 4111*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4112*bcb85aadSSteve Yin */ 4113*bcb85aadSSteve Yin [propget] HRESULT summary 4114*bcb85aadSSteve Yin ( 4115*bcb85aadSSteve Yin [out, retval] IUnknown **accessible 4116*bcb85aadSSteve Yin ); 4117*bcb85aadSSteve Yin 4118*bcb85aadSSteve Yin /** @brief Returns a boolean value indicating whether the specified column is 4119*bcb85aadSSteve Yin completely selected. 4120*bcb85aadSSteve Yin @param [in] column 4121*bcb85aadSSteve Yin 0 based index of the column for which to determine whether it is selected. 4122*bcb85aadSSteve Yin @param [out] isSelected 4123*bcb85aadSSteve Yin Returns TRUE if the specified column is selected completely and FALSE otherwise. 4124*bcb85aadSSteve Yin @retval S_OK 4125*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE 4126*bcb85aadSSteve Yin */ 4127*bcb85aadSSteve Yin [propget] HRESULT isColumnSelected 4128*bcb85aadSSteve Yin ( 4129*bcb85aadSSteve Yin [in] long column, 4130*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4131*bcb85aadSSteve Yin ); 4132*bcb85aadSSteve Yin 4133*bcb85aadSSteve Yin /** @brief Returns a boolean value indicating whether the specified row is completely 4134*bcb85aadSSteve Yin selected. 4135*bcb85aadSSteve Yin @param [in] row 4136*bcb85aadSSteve Yin 0 based index of the row for which to determine whether it is selected. 4137*bcb85aadSSteve Yin @param [out] isSelected 4138*bcb85aadSSteve Yin Returns TRUE if the specified row is selected completely and FALSE otherwise. 4139*bcb85aadSSteve Yin @retval S_OK 4140*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE 4141*bcb85aadSSteve Yin */ 4142*bcb85aadSSteve Yin [propget] HRESULT isRowSelected 4143*bcb85aadSSteve Yin ( 4144*bcb85aadSSteve Yin [in] long row, 4145*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4146*bcb85aadSSteve Yin ); 4147*bcb85aadSSteve Yin 4148*bcb85aadSSteve Yin /** @brief Returns a boolean value indicating whether the specified cell is selected. 4149*bcb85aadSSteve Yin @param [in] row 4150*bcb85aadSSteve Yin 0 based index of the row for the cell to determine whether it is selected. 4151*bcb85aadSSteve Yin @param [in] column 4152*bcb85aadSSteve Yin 0 based index of the column for the cell to determine whether it is selected. 4153*bcb85aadSSteve Yin @param [out] isSelected 4154*bcb85aadSSteve Yin Returns TRUE if the specified cell is selected and FALSE otherwise. 4155*bcb85aadSSteve Yin @retval S_OK 4156*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE 4157*bcb85aadSSteve Yin */ 4158*bcb85aadSSteve Yin [propget] HRESULT isSelected 4159*bcb85aadSSteve Yin ( 4160*bcb85aadSSteve Yin [in] long row, 4161*bcb85aadSSteve Yin [in] long column, 4162*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4163*bcb85aadSSteve Yin ); 4164*bcb85aadSSteve Yin 4165*bcb85aadSSteve Yin /** @brief Selects a row and unselects all previously selected rows. 4166*bcb85aadSSteve Yin @param [in] row 4167*bcb85aadSSteve Yin 0 based index of the row to be selected. 4168*bcb85aadSSteve Yin @retval S_OK 4169*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4170*bcb85aadSSteve Yin */ 4171*bcb85aadSSteve Yin HRESULT selectRow 4172*bcb85aadSSteve Yin ( 4173*bcb85aadSSteve Yin [in] long row 4174*bcb85aadSSteve Yin ); 4175*bcb85aadSSteve Yin 4176*bcb85aadSSteve Yin /** @brief Selects a column and unselects all previously selected columns. 4177*bcb85aadSSteve Yin @param [in] column 4178*bcb85aadSSteve Yin 0 based index of the column to be selected. 4179*bcb85aadSSteve Yin @retval S_OK 4180*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4181*bcb85aadSSteve Yin */ 4182*bcb85aadSSteve Yin HRESULT selectColumn 4183*bcb85aadSSteve Yin ( 4184*bcb85aadSSteve Yin [in] long column 4185*bcb85aadSSteve Yin ); 4186*bcb85aadSSteve Yin 4187*bcb85aadSSteve Yin /** @brief Unselects one row, leaving other selected rows selected (if any). 4188*bcb85aadSSteve Yin @param [in] row 4189*bcb85aadSSteve Yin 0 based index of the row to be unselected. 4190*bcb85aadSSteve Yin @retval S_OK 4191*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4192*bcb85aadSSteve Yin */ 4193*bcb85aadSSteve Yin HRESULT unselectRow 4194*bcb85aadSSteve Yin ( 4195*bcb85aadSSteve Yin [in] long row 4196*bcb85aadSSteve Yin ); 4197*bcb85aadSSteve Yin 4198*bcb85aadSSteve Yin /** @brief Unselects one column, leaving other selected columns selected (if any). 4199*bcb85aadSSteve Yin @param [in] column 4200*bcb85aadSSteve Yin 0 based index of the column to be unselected. 4201*bcb85aadSSteve Yin @retval S_OK 4202*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4203*bcb85aadSSteve Yin */ 4204*bcb85aadSSteve Yin HRESULT unselectColumn 4205*bcb85aadSSteve Yin ( 4206*bcb85aadSSteve Yin [in] long column 4207*bcb85aadSSteve Yin ); 4208*bcb85aadSSteve Yin 4209*bcb85aadSSteve Yin /** @brief Given a cell index, gets the row and column indexes and extents of a cell 4210*bcb85aadSSteve Yin and whether or not it is selected. 4211*bcb85aadSSteve Yin 4212*bcb85aadSSteve Yin This is a convenience function. It is not mandatory to implement it. 4213*bcb85aadSSteve Yin @param [in] index 4214*bcb85aadSSteve Yin 0 based index of this cell in the table. 4215*bcb85aadSSteve Yin @param [out] row 4216*bcb85aadSSteve Yin 0 based row index. 4217*bcb85aadSSteve Yin @param [out] column 4218*bcb85aadSSteve Yin 0 based column index. 4219*bcb85aadSSteve Yin @param [out] rowExtents 4220*bcb85aadSSteve Yin Number of cells spanned by this cell in this row. 4221*bcb85aadSSteve Yin @param [out] columnExtents 4222*bcb85aadSSteve Yin Number of cells spanned by this cell in this column. 4223*bcb85aadSSteve Yin @param [out] isSelected 4224*bcb85aadSSteve Yin Indicates if the specified cell is selected. 4225*bcb85aadSSteve Yin @retval S_OK 4226*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively 4227*bcb85aadSSteve Yin */ 4228*bcb85aadSSteve Yin [propget] HRESULT rowColumnExtentsAtIndex 4229*bcb85aadSSteve Yin ( 4230*bcb85aadSSteve Yin [in] long index, 4231*bcb85aadSSteve Yin [out] long *row, 4232*bcb85aadSSteve Yin [out] long *column, 4233*bcb85aadSSteve Yin [out] long *rowExtents, 4234*bcb85aadSSteve Yin [out] long *columnExtents, 4235*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4236*bcb85aadSSteve Yin ); 4237*bcb85aadSSteve Yin 4238*bcb85aadSSteve Yin /** @brief Returns the type and extents describing how a table changed. 4239*bcb85aadSSteve Yin 4240*bcb85aadSSteve Yin Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler. 4241*bcb85aadSSteve Yin 4242*bcb85aadSSteve Yin This data is only guaranteed to be valid while the thread notifying the event 4243*bcb85aadSSteve Yin continues. Once the handler has returned, the validity of the data depends on 4244*bcb85aadSSteve Yin how the server manages the life cycle of its objects. Also, note that the server 4245*bcb85aadSSteve Yin may have different life cycle management strategies for controls depending on 4246*bcb85aadSSteve Yin whether or not a control manages its children. Lists, trees, and tables can have 4247*bcb85aadSSteve Yin a large number of children and thus it's possible that the child objects for those 4248*bcb85aadSSteve Yin controls would only be created as needed. Servers should document their life cycle 4249*bcb85aadSSteve Yin strategy as this will be of interest to assistive technology or script engines 4250*bcb85aadSSteve Yin accessing data out of process or from other threads. Servers only need to save the 4251*bcb85aadSSteve Yin most recent row and column values associated with the change and a scope of the 4252*bcb85aadSSteve Yin entire application is adequate. 4253*bcb85aadSSteve Yin 4254*bcb85aadSSteve Yin @param [out] modelChange 4255*bcb85aadSSteve Yin A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn). 4256*bcb85aadSSteve Yin @retval S_OK 4257*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4258*bcb85aadSSteve Yin */ 4259*bcb85aadSSteve Yin [propget] HRESULT modelChange 4260*bcb85aadSSteve Yin ( 4261*bcb85aadSSteve Yin [out, retval] IA2TableModelChange *modelChange 4262*bcb85aadSSteve Yin ); 4263*bcb85aadSSteve Yin 4264*bcb85aadSSteve Yin} 4265*bcb85aadSSteve Yin/************************************************************************* 4266*bcb85aadSSteve Yin * 4267*bcb85aadSSteve Yin * File Name (AccessibleTable2.idl) 4268*bcb85aadSSteve Yin * 4269*bcb85aadSSteve Yin * IAccessible2 IDL Specification 4270*bcb85aadSSteve Yin * 4271*bcb85aadSSteve Yin * Copyright (c) 2007, 2012 Linux Foundation 4272*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 4273*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 4274*bcb85aadSSteve Yin * All rights reserved. 4275*bcb85aadSSteve Yin * 4276*bcb85aadSSteve Yin * 4277*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 4278*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 4279*bcb85aadSSteve Yin * are met: 4280*bcb85aadSSteve Yin * 4281*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 4282*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 4283*bcb85aadSSteve Yin * 4284*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 4285*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 4286*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 4287*bcb85aadSSteve Yin * provided with the distribution. 4288*bcb85aadSSteve Yin * 4289*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 4290*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 4291*bcb85aadSSteve Yin * derived from this software without specific prior written 4292*bcb85aadSSteve Yin * permission. 4293*bcb85aadSSteve Yin * 4294*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 4295*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 4296*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 4297*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 4298*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 4299*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 4300*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 4301*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 4302*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4303*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 4304*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 4305*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 4306*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4307*bcb85aadSSteve Yin * 4308*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 4309*bcb85aadSSteve Yin * BSD License" as published at: 4310*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 4311*bcb85aadSSteve Yin * 4312*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 4313*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 4314*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 4315*bcb85aadSSteve Yin * 4316*bcb85aadSSteve Yin ************************************************************************/ 4317*bcb85aadSSteve Yin 4318*bcb85aadSSteve Yin 4319*bcb85aadSSteve Yin 4320*bcb85aadSSteve Yin 4321*bcb85aadSSteve Yin 4322*bcb85aadSSteve Yin 4323*bcb85aadSSteve Yin 4324*bcb85aadSSteve Yin/** @brief This interface gives access to a two-dimensional table. 4325*bcb85aadSSteve Yin 4326*bcb85aadSSteve Yin Please also refer to the IAccessibleTableCell interface. 4327*bcb85aadSSteve Yin 4328*bcb85aadSSteve Yin If you want to support older applications you should also support the 4329*bcb85aadSSteve Yin IAccessibleTable inteface. 4330*bcb85aadSSteve Yin*/ 4331*bcb85aadSSteve Yin[object, uuid(6167f295-06f0-4cdd-a1fa-02e25153d869)] 4332*bcb85aadSSteve Yininterface IAccessibleTable2 : IUnknown 4333*bcb85aadSSteve Yin{ 4334*bcb85aadSSteve Yin 4335*bcb85aadSSteve Yin /** @brief Returns the accessible object at the specified row and column in 4336*bcb85aadSSteve Yin the table. This object could be an IAccessible or an IAccessible2. 4337*bcb85aadSSteve Yin @param [in] row 4338*bcb85aadSSteve Yin The 0 based row index for which to retrieve the cell. 4339*bcb85aadSSteve Yin @param [in] column 4340*bcb85aadSSteve Yin The 0 based column index for which to retrieve the cell. 4341*bcb85aadSSteve Yin @param [out] cell 4342*bcb85aadSSteve Yin If both row and column index are valid then the corresponding accessible 4343*bcb85aadSSteve Yin object is returned that represents the requested cell regardless of whether 4344*bcb85aadSSteve Yin the cell is currently visible (on the screen). 4345*bcb85aadSSteve Yin @retval S_OK 4346*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4347*bcb85aadSSteve Yin */ 4348*bcb85aadSSteve Yin [propget] HRESULT cellAt 4349*bcb85aadSSteve Yin ( 4350*bcb85aadSSteve Yin [in] long row, 4351*bcb85aadSSteve Yin [in] long column, 4352*bcb85aadSSteve Yin [out, retval] IUnknown **cell 4353*bcb85aadSSteve Yin ); 4354*bcb85aadSSteve Yin 4355*bcb85aadSSteve Yin /** @brief Returns the caption for the table. The returned object could be 4356*bcb85aadSSteve Yin an IAccessible or an IAccessible2. 4357*bcb85aadSSteve Yin @param [out] accessible 4358*bcb85aadSSteve Yin If the table has a caption then a reference to it is returned, else a NULL 4359*bcb85aadSSteve Yin pointer is returned. 4360*bcb85aadSSteve Yin @retval S_OK 4361*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4362*bcb85aadSSteve Yin @deprecated use a describedBy relation 4363*bcb85aadSSteve Yin */ 4364*bcb85aadSSteve Yin [propget] HRESULT caption 4365*bcb85aadSSteve Yin ( 4366*bcb85aadSSteve Yin [out, retval] IUnknown **accessible 4367*bcb85aadSSteve Yin ); 4368*bcb85aadSSteve Yin 4369*bcb85aadSSteve Yin /** @brief Returns the description text of the specified column in the table. 4370*bcb85aadSSteve Yin @param [in] column 4371*bcb85aadSSteve Yin The 0 based index of the column for which to retrieve the description. 4372*bcb85aadSSteve Yin @param [out] description 4373*bcb85aadSSteve Yin Returns the description text of the specified column in the table if such a 4374*bcb85aadSSteve Yin description exists. Otherwise a NULL pointer is returned. 4375*bcb85aadSSteve Yin @retval S_OK 4376*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4377*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4378*bcb85aadSSteve Yin */ 4379*bcb85aadSSteve Yin [propget] HRESULT columnDescription 4380*bcb85aadSSteve Yin ( 4381*bcb85aadSSteve Yin [in] long column, 4382*bcb85aadSSteve Yin [out, retval] BSTR *description 4383*bcb85aadSSteve Yin ); 4384*bcb85aadSSteve Yin 4385*bcb85aadSSteve Yin 4386*bcb85aadSSteve Yin /** @brief Returns the total number of columns in table 4387*bcb85aadSSteve Yin @param [out] columnCount 4388*bcb85aadSSteve Yin Number of columns in table (including columns outside the current viewport) 4389*bcb85aadSSteve Yin @retval S_OK 4390*bcb85aadSSteve Yin */ 4391*bcb85aadSSteve Yin [propget] HRESULT nColumns 4392*bcb85aadSSteve Yin ( 4393*bcb85aadSSteve Yin [out, retval] long *columnCount 4394*bcb85aadSSteve Yin ); 4395*bcb85aadSSteve Yin 4396*bcb85aadSSteve Yin /** @brief Returns the total number of rows in table 4397*bcb85aadSSteve Yin @param [out] rowCount 4398*bcb85aadSSteve Yin Number of rows in table (including rows outside the current viewport) 4399*bcb85aadSSteve Yin @retval S_OK 4400*bcb85aadSSteve Yin */ 4401*bcb85aadSSteve Yin [propget] HRESULT nRows 4402*bcb85aadSSteve Yin ( 4403*bcb85aadSSteve Yin [out, retval] long *rowCount 4404*bcb85aadSSteve Yin ); 4405*bcb85aadSSteve Yin 4406*bcb85aadSSteve Yin /** @brief Returns the total number of selected cells 4407*bcb85aadSSteve Yin @param [out] cellCount 4408*bcb85aadSSteve Yin Number of cells currently selected 4409*bcb85aadSSteve Yin @retval S_OK 4410*bcb85aadSSteve Yin */ 4411*bcb85aadSSteve Yin [propget] HRESULT nSelectedCells 4412*bcb85aadSSteve Yin ( 4413*bcb85aadSSteve Yin [out, retval] long *cellCount 4414*bcb85aadSSteve Yin ); 4415*bcb85aadSSteve Yin 4416*bcb85aadSSteve Yin /** @brief Returns the total number of selected columns 4417*bcb85aadSSteve Yin @param [out] columnCount 4418*bcb85aadSSteve Yin Number of columns currently selected 4419*bcb85aadSSteve Yin @retval S_OK 4420*bcb85aadSSteve Yin */ 4421*bcb85aadSSteve Yin [propget] HRESULT nSelectedColumns 4422*bcb85aadSSteve Yin ( 4423*bcb85aadSSteve Yin [out, retval] long *columnCount 4424*bcb85aadSSteve Yin ); 4425*bcb85aadSSteve Yin 4426*bcb85aadSSteve Yin /** @brief Returns the total number of selected rows 4427*bcb85aadSSteve Yin @param [out] rowCount 4428*bcb85aadSSteve Yin Number of rows currently selected 4429*bcb85aadSSteve Yin @retval S_OK 4430*bcb85aadSSteve Yin */ 4431*bcb85aadSSteve Yin [propget] HRESULT nSelectedRows 4432*bcb85aadSSteve Yin ( 4433*bcb85aadSSteve Yin [out, retval] long *rowCount 4434*bcb85aadSSteve Yin ); 4435*bcb85aadSSteve Yin 4436*bcb85aadSSteve Yin /** @brief Returns the description text of the specified row in the table. 4437*bcb85aadSSteve Yin @param [in] row 4438*bcb85aadSSteve Yin The 0 based index of the row for which to retrieve the description. 4439*bcb85aadSSteve Yin @param [out] description 4440*bcb85aadSSteve Yin Returns the description text of the specified row in the table if such a 4441*bcb85aadSSteve Yin description exists. Otherwise a NULL pointer is returned. 4442*bcb85aadSSteve Yin @retval S_OK 4443*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4444*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4445*bcb85aadSSteve Yin */ 4446*bcb85aadSSteve Yin [propget] HRESULT rowDescription 4447*bcb85aadSSteve Yin ( 4448*bcb85aadSSteve Yin [in] long row, 4449*bcb85aadSSteve Yin [out, retval] BSTR *description 4450*bcb85aadSSteve Yin ); 4451*bcb85aadSSteve Yin 4452*bcb85aadSSteve Yin /** @brief Returns a list of accessibles currently selected. 4453*bcb85aadSSteve Yin @param [out] cells 4454*bcb85aadSSteve Yin Pointer to an array of references to selected accessibles. The array is 4455*bcb85aadSSteve Yin allocated by the server with CoTaskMemAlloc and freed by the client with 4456*bcb85aadSSteve Yin CoTaskMemFree. 4457*bcb85aadSSteve Yin @param [out] nSelectedCells 4458*bcb85aadSSteve Yin The number of accessibles returned; the size of the returned array. 4459*bcb85aadSSteve Yin @retval S_OK 4460*bcb85aadSSteve Yin @retval S_FALSE if there are none, [out] values are NULL and 0 respectively 4461*bcb85aadSSteve Yin */ 4462*bcb85aadSSteve Yin [propget] HRESULT selectedCells 4463*bcb85aadSSteve Yin ( 4464*bcb85aadSSteve Yin [out, size_is(,*nSelectedCells)] IUnknown ***cells, 4465*bcb85aadSSteve Yin [out, retval] long *nSelectedCells 4466*bcb85aadSSteve Yin ); 4467*bcb85aadSSteve Yin 4468*bcb85aadSSteve Yin /** @brief Returns a list of column indexes currently selected (0 based). 4469*bcb85aadSSteve Yin @param [out] selectedColumns 4470*bcb85aadSSteve Yin A pointer to an array of column indexes of selected columns (each index is 4471*bcb85aadSSteve Yin 0 based). The array is allocated by the server with CoTaskMemAlloc and 4472*bcb85aadSSteve Yin freed by the client with CoTaskMemFree. 4473*bcb85aadSSteve Yin @param [out] nColumns 4474*bcb85aadSSteve Yin The number of column indexes returned; the size of the returned array. 4475*bcb85aadSSteve Yin @retval S_OK 4476*bcb85aadSSteve Yin @retval S_FALSE if there are none, [out] values are NULL and 0 respectively 4477*bcb85aadSSteve Yin */ 4478*bcb85aadSSteve Yin [propget] HRESULT selectedColumns 4479*bcb85aadSSteve Yin ( 4480*bcb85aadSSteve Yin [out, size_is(,*nColumns)] long **selectedColumns, 4481*bcb85aadSSteve Yin [out, retval] long *nColumns 4482*bcb85aadSSteve Yin ); 4483*bcb85aadSSteve Yin 4484*bcb85aadSSteve Yin /** @brief Returns a list of row indexes currently selected (0 based). 4485*bcb85aadSSteve Yin @param [out] selectedRows 4486*bcb85aadSSteve Yin An array of row indexes of selected rows (each index is 0 based). The array 4487*bcb85aadSSteve Yin is allocated by the server with CoTaskMemAlloc and freed by the client with 4488*bcb85aadSSteve Yin CoTaskMemFree. 4489*bcb85aadSSteve Yin @param [out] nRows 4490*bcb85aadSSteve Yin The number of row indexes returned; the size of the returned array. 4491*bcb85aadSSteve Yin @retval S_OK 4492*bcb85aadSSteve Yin @retval S_FALSE if there are none, [out] values are NULL and 0 respectively 4493*bcb85aadSSteve Yin */ 4494*bcb85aadSSteve Yin [propget] HRESULT selectedRows 4495*bcb85aadSSteve Yin ( 4496*bcb85aadSSteve Yin [out, size_is(,*nRows)] long **selectedRows, 4497*bcb85aadSSteve Yin [out, retval] long *nRows 4498*bcb85aadSSteve Yin ); 4499*bcb85aadSSteve Yin 4500*bcb85aadSSteve Yin /** @brief Returns the summary description of the table. The returned object could be 4501*bcb85aadSSteve Yin an IAccessible or an IAccessible2. 4502*bcb85aadSSteve Yin @param [out] accessible 4503*bcb85aadSSteve Yin Returns a reference to an implementation dependent accessible object 4504*bcb85aadSSteve Yin representing the table's summary or a NULL pointer if the table 4505*bcb85aadSSteve Yin does not support a summary. 4506*bcb85aadSSteve Yin @retval S_OK 4507*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4508*bcb85aadSSteve Yin @deprecated Use the labeledBy relation 4509*bcb85aadSSteve Yin */ 4510*bcb85aadSSteve Yin [propget] HRESULT summary 4511*bcb85aadSSteve Yin ( 4512*bcb85aadSSteve Yin [out, retval] IUnknown **accessible 4513*bcb85aadSSteve Yin ); 4514*bcb85aadSSteve Yin 4515*bcb85aadSSteve Yin /** @brief Returns a boolean value indicating whether the specified column is 4516*bcb85aadSSteve Yin completely selected. 4517*bcb85aadSSteve Yin @param [in] column 4518*bcb85aadSSteve Yin 0 based index of the column for which to determine whether it is selected. 4519*bcb85aadSSteve Yin @param [out] isSelected 4520*bcb85aadSSteve Yin Returns TRUE if the specified column is selected completely and FALSE otherwise. 4521*bcb85aadSSteve Yin @retval S_OK 4522*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4523*bcb85aadSSteve Yin */ 4524*bcb85aadSSteve Yin [propget] HRESULT isColumnSelected 4525*bcb85aadSSteve Yin ( 4526*bcb85aadSSteve Yin [in] long column, 4527*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4528*bcb85aadSSteve Yin ); 4529*bcb85aadSSteve Yin 4530*bcb85aadSSteve Yin /** @brief Returns a boolean value indicating whether the specified row is completely 4531*bcb85aadSSteve Yin selected. 4532*bcb85aadSSteve Yin @param [in] row 4533*bcb85aadSSteve Yin 0 based index of the row for which to determine whether it is selected. 4534*bcb85aadSSteve Yin @param [out] isSelected 4535*bcb85aadSSteve Yin Returns TRUE if the specified row is selected completely and FALSE otherwise. 4536*bcb85aadSSteve Yin @retval S_OK 4537*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4538*bcb85aadSSteve Yin */ 4539*bcb85aadSSteve Yin [propget] HRESULT isRowSelected 4540*bcb85aadSSteve Yin ( 4541*bcb85aadSSteve Yin [in] long row, 4542*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4543*bcb85aadSSteve Yin ); 4544*bcb85aadSSteve Yin 4545*bcb85aadSSteve Yin /** @brief Selects a row and unselects all previously selected rows. 4546*bcb85aadSSteve Yin 4547*bcb85aadSSteve Yin The behavior should mimic that of the application, but for those applications 4548*bcb85aadSSteve Yin which do not have a means in the GUI to select a full row of cells the behavior 4549*bcb85aadSSteve Yin should be as follows: First any selected rows in the table are unselected. Then 4550*bcb85aadSSteve Yin the entire row of cells for the specified row is selected. If any of the 4551*bcb85aadSSteve Yin cells in the selected row span additional rows, the cells in those rows 4552*bcb85aadSSteve Yin are also selected. 4553*bcb85aadSSteve Yin @param [in] row 4554*bcb85aadSSteve Yin 0 based index of the row to be selected. 4555*bcb85aadSSteve Yin @retval S_OK 4556*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4557*bcb85aadSSteve Yin */ 4558*bcb85aadSSteve Yin HRESULT selectRow 4559*bcb85aadSSteve Yin ( 4560*bcb85aadSSteve Yin [in] long row 4561*bcb85aadSSteve Yin ); 4562*bcb85aadSSteve Yin 4563*bcb85aadSSteve Yin /** @brief Selects a column and unselects all previously selected columns. 4564*bcb85aadSSteve Yin 4565*bcb85aadSSteve Yin The behavior should mimic that of the application, but for those applications 4566*bcb85aadSSteve Yin which do not have a means in the GUI to select a full column of cells the behavior 4567*bcb85aadSSteve Yin should be as follows: First any selected columns in the table are unselected. Then 4568*bcb85aadSSteve Yin the entire column of cells for the specified column is selected. If any of the 4569*bcb85aadSSteve Yin cells in the selected column span additional columns, the cells in those columns 4570*bcb85aadSSteve Yin are also selected. 4571*bcb85aadSSteve Yin @param [in] column 4572*bcb85aadSSteve Yin 0 based index of the column to be selected. 4573*bcb85aadSSteve Yin @retval S_OK 4574*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4575*bcb85aadSSteve Yin */ 4576*bcb85aadSSteve Yin HRESULT selectColumn 4577*bcb85aadSSteve Yin ( 4578*bcb85aadSSteve Yin [in] long column 4579*bcb85aadSSteve Yin ); 4580*bcb85aadSSteve Yin 4581*bcb85aadSSteve Yin /** @brief Unselects one row, leaving other selected rows selected (if any). 4582*bcb85aadSSteve Yin 4583*bcb85aadSSteve Yin The behavior should mimic that of the application, but for those applications 4584*bcb85aadSSteve Yin which do not have a means in the GUI to unselect a full row of cells the 4585*bcb85aadSSteve Yin behavior should be as follows: The entire row of cells for the specified 4586*bcb85aadSSteve Yin row is unselected. If any of the cells in the selected row span additional 4587*bcb85aadSSteve Yin rows, the cells in those rows are also unselected. 4588*bcb85aadSSteve Yin @param [in] row 4589*bcb85aadSSteve Yin 0 based index of the row to be unselected. 4590*bcb85aadSSteve Yin @retval S_OK 4591*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4592*bcb85aadSSteve Yin */ 4593*bcb85aadSSteve Yin HRESULT unselectRow 4594*bcb85aadSSteve Yin ( 4595*bcb85aadSSteve Yin [in] long row 4596*bcb85aadSSteve Yin ); 4597*bcb85aadSSteve Yin 4598*bcb85aadSSteve Yin /** @brief Unselects one column, leaving other selected columns selected (if any). 4599*bcb85aadSSteve Yin 4600*bcb85aadSSteve Yin The behavior should mimic that of the application, but for those applications 4601*bcb85aadSSteve Yin which do not have a means in the GUI to unselect a full column of cells the 4602*bcb85aadSSteve Yin behavior should be as follows: The entire column of cells for the specified 4603*bcb85aadSSteve Yin column is unselected. If any of the cells in the selected column span additional 4604*bcb85aadSSteve Yin columns, the cells in those columns are also unselected. 4605*bcb85aadSSteve Yin @param [in] column 4606*bcb85aadSSteve Yin 0 based index of the column to be unselected. 4607*bcb85aadSSteve Yin @retval S_OK 4608*bcb85aadSSteve Yin @retval E_INVALIDARG if bad [in] passed 4609*bcb85aadSSteve Yin */ 4610*bcb85aadSSteve Yin HRESULT unselectColumn 4611*bcb85aadSSteve Yin ( 4612*bcb85aadSSteve Yin [in] long column 4613*bcb85aadSSteve Yin ); 4614*bcb85aadSSteve Yin 4615*bcb85aadSSteve Yin /** @brief Returns the type and extents describing how a table changed. 4616*bcb85aadSSteve Yin 4617*bcb85aadSSteve Yin Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler. 4618*bcb85aadSSteve Yin 4619*bcb85aadSSteve Yin This data is only guaranteed to be valid while the thread notifying the event 4620*bcb85aadSSteve Yin continues. Once the handler has returned, the validity of the data depends on 4621*bcb85aadSSteve Yin how the server manages the life cycle of its objects. Also, note that the server 4622*bcb85aadSSteve Yin may have different life cycle management strategies for controls depending on 4623*bcb85aadSSteve Yin whether or not a control manages its children. Lists, trees, and tables can have 4624*bcb85aadSSteve Yin a large number of children and thus it's possible that the child objects for those 4625*bcb85aadSSteve Yin controls would only be created as needed. Servers should document their life cycle 4626*bcb85aadSSteve Yin strategy as this will be of interest to assistive technology or script engines 4627*bcb85aadSSteve Yin accessing data out of process or from other threads. Servers only need to save the 4628*bcb85aadSSteve Yin most recent row and column values associated with the change and a scope of the 4629*bcb85aadSSteve Yin entire application is adequate. 4630*bcb85aadSSteve Yin 4631*bcb85aadSSteve Yin @param [out] modelChange 4632*bcb85aadSSteve Yin A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn). 4633*bcb85aadSSteve Yin @retval S_OK 4634*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4635*bcb85aadSSteve Yin */ 4636*bcb85aadSSteve Yin [propget] HRESULT modelChange 4637*bcb85aadSSteve Yin ( 4638*bcb85aadSSteve Yin [out, retval] IA2TableModelChange *modelChange 4639*bcb85aadSSteve Yin ); 4640*bcb85aadSSteve Yin 4641*bcb85aadSSteve Yin} 4642*bcb85aadSSteve Yin/************************************************************************* 4643*bcb85aadSSteve Yin * 4644*bcb85aadSSteve Yin * File Name (AccessibleTableCell.idl) 4645*bcb85aadSSteve Yin * 4646*bcb85aadSSteve Yin * IAccessible2 IDL Specification 4647*bcb85aadSSteve Yin * 4648*bcb85aadSSteve Yin * Copyright (c) 2007, 2013 Linux Foundation 4649*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 4650*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 4651*bcb85aadSSteve Yin * All rights reserved. 4652*bcb85aadSSteve Yin * 4653*bcb85aadSSteve Yin * 4654*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 4655*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 4656*bcb85aadSSteve Yin * are met: 4657*bcb85aadSSteve Yin * 4658*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 4659*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 4660*bcb85aadSSteve Yin * 4661*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 4662*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 4663*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 4664*bcb85aadSSteve Yin * provided with the distribution. 4665*bcb85aadSSteve Yin * 4666*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 4667*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 4668*bcb85aadSSteve Yin * derived from this software without specific prior written 4669*bcb85aadSSteve Yin * permission. 4670*bcb85aadSSteve Yin * 4671*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 4672*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 4673*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 4674*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 4675*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 4676*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 4677*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 4678*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 4679*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4680*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 4681*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 4682*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 4683*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4684*bcb85aadSSteve Yin * 4685*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 4686*bcb85aadSSteve Yin * BSD License" as published at: 4687*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 4688*bcb85aadSSteve Yin * 4689*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 4690*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 4691*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 4692*bcb85aadSSteve Yin * 4693*bcb85aadSSteve Yin ************************************************************************/ 4694*bcb85aadSSteve Yin 4695*bcb85aadSSteve Yin 4696*bcb85aadSSteve Yin 4697*bcb85aadSSteve Yin 4698*bcb85aadSSteve Yin 4699*bcb85aadSSteve Yin 4700*bcb85aadSSteve Yin/** @brief This interface gives access to the cells of a two-dimensional table. 4701*bcb85aadSSteve Yin 4702*bcb85aadSSteve Yin Please also refer to the IAccessibleTable2 interface. 4703*bcb85aadSSteve Yin 4704*bcb85aadSSteve Yin*/ 4705*bcb85aadSSteve Yin[object, uuid(594116B1-C99F-4847-AD06-0A7A86ECE645)] 4706*bcb85aadSSteve Yininterface IAccessibleTableCell : IUnknown 4707*bcb85aadSSteve Yin{ 4708*bcb85aadSSteve Yin 4709*bcb85aadSSteve Yin /** @brief Returns the number of columns occupied by this cell accessible. 4710*bcb85aadSSteve Yin 4711*bcb85aadSSteve Yin The result is greater than 1 if the specified cell spans multiple columns. 4712*bcb85aadSSteve Yin @param [out] nColumnsSpanned 4713*bcb85aadSSteve Yin Returns the 1 based column extent of the specified cell. 4714*bcb85aadSSteve Yin @retval S_OK 4715*bcb85aadSSteve Yin */ 4716*bcb85aadSSteve Yin [propget] HRESULT columnExtent 4717*bcb85aadSSteve Yin ( 4718*bcb85aadSSteve Yin [out, retval] long *nColumnsSpanned 4719*bcb85aadSSteve Yin ); 4720*bcb85aadSSteve Yin 4721*bcb85aadSSteve Yin /** @brief Returns the column headers as an array of cell accessibles. 4722*bcb85aadSSteve Yin 4723*bcb85aadSSteve Yin @param [out] cellAccessibles 4724*bcb85aadSSteve Yin Pointer to an array of references to cell accessibles. The array is allocated 4725*bcb85aadSSteve Yin by the server. The client must free it with CoTaskMemFree. 4726*bcb85aadSSteve Yin @param [out] nColumnHeaderCells 4727*bcb85aadSSteve Yin The number of accessibles returned; the size of the returned array. 4728*bcb85aadSSteve Yin @retval S_OK 4729*bcb85aadSSteve Yin @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively 4730*bcb85aadSSteve Yin */ 4731*bcb85aadSSteve Yin [propget] HRESULT columnHeaderCells 4732*bcb85aadSSteve Yin ( 4733*bcb85aadSSteve Yin [out, size_is(,*nColumnHeaderCells)] IUnknown ***cellAccessibles, 4734*bcb85aadSSteve Yin [out, retval] long *nColumnHeaderCells 4735*bcb85aadSSteve Yin ); 4736*bcb85aadSSteve Yin 4737*bcb85aadSSteve Yin /** @brief Translates this cell accessible into the corresponding column index. 4738*bcb85aadSSteve Yin 4739*bcb85aadSSteve Yin @param [out] columnIndex 4740*bcb85aadSSteve Yin Returns the 0 based column index of the cell of the specified cell or the index of 4741*bcb85aadSSteve Yin the first column if the cell spans multiple columns. 4742*bcb85aadSSteve Yin @retval S_OK 4743*bcb85aadSSteve Yin */ 4744*bcb85aadSSteve Yin [propget] HRESULT columnIndex 4745*bcb85aadSSteve Yin ( 4746*bcb85aadSSteve Yin [out, retval] long *columnIndex 4747*bcb85aadSSteve Yin ); 4748*bcb85aadSSteve Yin 4749*bcb85aadSSteve Yin /** @brief Returns the number of rows occupied by this cell accessible. 4750*bcb85aadSSteve Yin 4751*bcb85aadSSteve Yin @param [out] nRowsSpanned 4752*bcb85aadSSteve Yin Returns the row extent of the specified cell. 4753*bcb85aadSSteve Yin @retval S_OK 4754*bcb85aadSSteve Yin */ 4755*bcb85aadSSteve Yin [propget] HRESULT rowExtent 4756*bcb85aadSSteve Yin ( 4757*bcb85aadSSteve Yin [out, retval] long *nRowsSpanned 4758*bcb85aadSSteve Yin ); 4759*bcb85aadSSteve Yin 4760*bcb85aadSSteve Yin /** @brief Returns the row headers as an array of cell accessibles. 4761*bcb85aadSSteve Yin 4762*bcb85aadSSteve Yin @param [out] cellAccessibles 4763*bcb85aadSSteve Yin Pointer to an array of references to cell accessibles. The array is allocated 4764*bcb85aadSSteve Yin by the server. The client must free it with CoTaskMemFree. 4765*bcb85aadSSteve Yin @param [out] nRowHeaderCells 4766*bcb85aadSSteve Yin The number of accessibles returned; the size of the returned array. 4767*bcb85aadSSteve Yin @retval S_OK 4768*bcb85aadSSteve Yin @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively 4769*bcb85aadSSteve Yin */ 4770*bcb85aadSSteve Yin [propget] HRESULT rowHeaderCells 4771*bcb85aadSSteve Yin ( 4772*bcb85aadSSteve Yin [out, size_is(,*nRowHeaderCells)] IUnknown ***cellAccessibles, 4773*bcb85aadSSteve Yin [out, retval] long *nRowHeaderCells 4774*bcb85aadSSteve Yin ); 4775*bcb85aadSSteve Yin 4776*bcb85aadSSteve Yin /** @brief Translates this cell accessible into the corresponding row index. 4777*bcb85aadSSteve Yin 4778*bcb85aadSSteve Yin @param [out] rowIndex 4779*bcb85aadSSteve Yin Returns the 0 based row index of the specified cell or the index of 4780*bcb85aadSSteve Yin the first row if the cell spans multiple rows. 4781*bcb85aadSSteve Yin @retval S_OK 4782*bcb85aadSSteve Yin */ 4783*bcb85aadSSteve Yin [propget] HRESULT rowIndex 4784*bcb85aadSSteve Yin ( 4785*bcb85aadSSteve Yin [out, retval] long *rowIndex 4786*bcb85aadSSteve Yin ); 4787*bcb85aadSSteve Yin 4788*bcb85aadSSteve Yin /** @brief Returns a boolean value indicating whether this cell is selected. 4789*bcb85aadSSteve Yin 4790*bcb85aadSSteve Yin @param [out] isSelected 4791*bcb85aadSSteve Yin Returns TRUE if the specified cell is selected and FALSE otherwise. 4792*bcb85aadSSteve Yin @retval S_OK 4793*bcb85aadSSteve Yin */ 4794*bcb85aadSSteve Yin [propget] HRESULT isSelected 4795*bcb85aadSSteve Yin ( 4796*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4797*bcb85aadSSteve Yin ); 4798*bcb85aadSSteve Yin 4799*bcb85aadSSteve Yin /** @brief Gets the row and column indexes and extents of this cell accessible 4800*bcb85aadSSteve Yin and whether or not it is selected. 4801*bcb85aadSSteve Yin 4802*bcb85aadSSteve Yin This is a convenience function. It is not mandatory to implement it. 4803*bcb85aadSSteve Yin @param [out] row 4804*bcb85aadSSteve Yin 0 based row index. 4805*bcb85aadSSteve Yin @param [out] column 4806*bcb85aadSSteve Yin 0 based column index. 4807*bcb85aadSSteve Yin @param [out] rowExtents 4808*bcb85aadSSteve Yin Number of cells spanned by this cell in this row. 4809*bcb85aadSSteve Yin @param [out] columnExtents 4810*bcb85aadSSteve Yin Number of cells spanned by this cell in this column. 4811*bcb85aadSSteve Yin @param [out] isSelected 4812*bcb85aadSSteve Yin Indicates if the specified cell is selected. 4813*bcb85aadSSteve Yin @retval S_OK 4814*bcb85aadSSteve Yin */ 4815*bcb85aadSSteve Yin [propget] HRESULT rowColumnExtents 4816*bcb85aadSSteve Yin ( 4817*bcb85aadSSteve Yin [out] long *row, 4818*bcb85aadSSteve Yin [out] long *column, 4819*bcb85aadSSteve Yin [out] long *rowExtents, 4820*bcb85aadSSteve Yin [out] long *columnExtents, 4821*bcb85aadSSteve Yin [out, retval] boolean *isSelected 4822*bcb85aadSSteve Yin ); 4823*bcb85aadSSteve Yin 4824*bcb85aadSSteve Yin /** @brief Returns a reference to the accessbile of the containing table. 4825*bcb85aadSSteve Yin 4826*bcb85aadSSteve Yin @param [out] table 4827*bcb85aadSSteve Yin Returns a reference to the IUnknown of the containing table. 4828*bcb85aadSSteve Yin @retval S_OK 4829*bcb85aadSSteve Yin */ 4830*bcb85aadSSteve Yin [propget] HRESULT table 4831*bcb85aadSSteve Yin ( 4832*bcb85aadSSteve Yin [out, retval] IUnknown **table 4833*bcb85aadSSteve Yin ); 4834*bcb85aadSSteve Yin 4835*bcb85aadSSteve Yin} 4836*bcb85aadSSteve Yin/************************************************************************* 4837*bcb85aadSSteve Yin * 4838*bcb85aadSSteve Yin * File Name (AccessibleImage.idl) 4839*bcb85aadSSteve Yin * 4840*bcb85aadSSteve Yin * IAccessible2 IDL Specification 4841*bcb85aadSSteve Yin * 4842*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 4843*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 4844*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 4845*bcb85aadSSteve Yin * All rights reserved. 4846*bcb85aadSSteve Yin * 4847*bcb85aadSSteve Yin * 4848*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 4849*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 4850*bcb85aadSSteve Yin * are met: 4851*bcb85aadSSteve Yin * 4852*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 4853*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 4854*bcb85aadSSteve Yin * 4855*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 4856*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 4857*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 4858*bcb85aadSSteve Yin * provided with the distribution. 4859*bcb85aadSSteve Yin * 4860*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 4861*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 4862*bcb85aadSSteve Yin * derived from this software without specific prior written 4863*bcb85aadSSteve Yin * permission. 4864*bcb85aadSSteve Yin * 4865*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 4866*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 4867*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 4868*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 4869*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 4870*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 4871*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 4872*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 4873*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4874*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 4875*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 4876*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 4877*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4878*bcb85aadSSteve Yin * 4879*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 4880*bcb85aadSSteve Yin * BSD License" as published at: 4881*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 4882*bcb85aadSSteve Yin * 4883*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 4884*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 4885*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 4886*bcb85aadSSteve Yin * 4887*bcb85aadSSteve Yin ************************************************************************/ 4888*bcb85aadSSteve Yin 4889*bcb85aadSSteve Yin 4890*bcb85aadSSteve Yin 4891*bcb85aadSSteve Yin 4892*bcb85aadSSteve Yin 4893*bcb85aadSSteve Yin 4894*bcb85aadSSteve Yin/** @brief This interface represents images and icons. 4895*bcb85aadSSteve Yin 4896*bcb85aadSSteve Yin This interface is used for a representation of images like icons on buttons. 4897*bcb85aadSSteve Yin %IAccessibleImage only needs to be implemented in certain situations. Some 4898*bcb85aadSSteve Yin examples are: 4899*bcb85aadSSteve Yin <ol> 4900*bcb85aadSSteve Yin <li>The accessible name and description are not enough to fully 4901*bcb85aadSSteve Yin describe the image, e.g. when the accessible description is used to define the 4902*bcb85aadSSteve Yin behavior of an actionable image and the image itself conveys semantically 4903*bcb85aadSSteve Yin significant information. 4904*bcb85aadSSteve Yin <li>The user can edit the content that includes an 4905*bcb85aadSSteve Yin image and therefore the user needs to be able to review the image's position. 4906*bcb85aadSSteve Yin </ol> 4907*bcb85aadSSteve Yin*/ 4908*bcb85aadSSteve Yin[object, uuid(FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE)] 4909*bcb85aadSSteve Yininterface IAccessibleImage : IUnknown 4910*bcb85aadSSteve Yin{ 4911*bcb85aadSSteve Yin /** @brief Returns the localized description of the image. 4912*bcb85aadSSteve Yin @param [out] description 4913*bcb85aadSSteve Yin @retval S_OK 4914*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 4915*bcb85aadSSteve Yin */ 4916*bcb85aadSSteve Yin [propget] HRESULT description 4917*bcb85aadSSteve Yin ( 4918*bcb85aadSSteve Yin [out, retval] BSTR *description 4919*bcb85aadSSteve Yin ); 4920*bcb85aadSSteve Yin 4921*bcb85aadSSteve Yin /** @brief Returns the coordinates of the image. 4922*bcb85aadSSteve Yin @param [in] coordinateType 4923*bcb85aadSSteve Yin Specifies whether the returned coordinates should be relative to the screen or the parent object. 4924*bcb85aadSSteve Yin @param [out] x 4925*bcb85aadSSteve Yin @param [out] y 4926*bcb85aadSSteve Yin @retval S_OK 4927*bcb85aadSSteve Yin */ 4928*bcb85aadSSteve Yin [propget] HRESULT imagePosition 4929*bcb85aadSSteve Yin ( 4930*bcb85aadSSteve Yin [in] enum IA2CoordinateType coordinateType, 4931*bcb85aadSSteve Yin [out] long *x, 4932*bcb85aadSSteve Yin [out, retval] long *y 4933*bcb85aadSSteve Yin ); 4934*bcb85aadSSteve Yin 4935*bcb85aadSSteve Yin /** @brief Returns the size of the image in units specified by parent's coordinate system. 4936*bcb85aadSSteve Yin @param [out] height 4937*bcb85aadSSteve Yin @param [out] width 4938*bcb85aadSSteve Yin @retval S_OK 4939*bcb85aadSSteve Yin */ 4940*bcb85aadSSteve Yin 4941*bcb85aadSSteve Yin [propget] HRESULT imageSize 4942*bcb85aadSSteve Yin ( 4943*bcb85aadSSteve Yin [out] long *height, 4944*bcb85aadSSteve Yin [out, retval] long *width 4945*bcb85aadSSteve Yin ); 4946*bcb85aadSSteve Yin} 4947*bcb85aadSSteve Yin/************************************************************************* 4948*bcb85aadSSteve Yin * 4949*bcb85aadSSteve Yin * File Name (AccessibleEventID.idl) 4950*bcb85aadSSteve Yin * 4951*bcb85aadSSteve Yin * IAccessible2 IDL Specification 4952*bcb85aadSSteve Yin * 4953*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 4954*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 4955*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 4956*bcb85aadSSteve Yin * All rights reserved. 4957*bcb85aadSSteve Yin * 4958*bcb85aadSSteve Yin * 4959*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 4960*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 4961*bcb85aadSSteve Yin * are met: 4962*bcb85aadSSteve Yin * 4963*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 4964*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 4965*bcb85aadSSteve Yin * 4966*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 4967*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 4968*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 4969*bcb85aadSSteve Yin * provided with the distribution. 4970*bcb85aadSSteve Yin * 4971*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 4972*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 4973*bcb85aadSSteve Yin * derived from this software without specific prior written 4974*bcb85aadSSteve Yin * permission. 4975*bcb85aadSSteve Yin * 4976*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 4977*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 4978*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 4979*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 4980*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 4981*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 4982*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 4983*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 4984*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4985*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 4986*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 4987*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 4988*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4989*bcb85aadSSteve Yin * 4990*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 4991*bcb85aadSSteve Yin * BSD License" as published at: 4992*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 4993*bcb85aadSSteve Yin * 4994*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 4995*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 4996*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 4997*bcb85aadSSteve Yin * 4998*bcb85aadSSteve Yin ************************************************************************/ 4999*bcb85aadSSteve Yin 5000*bcb85aadSSteve Yin/** %IAccessible2 specific event constants 5001*bcb85aadSSteve Yin 5002*bcb85aadSSteve Yin This enum defines the event IDs fired by %IAccessible2 objects. The event IDs 5003*bcb85aadSSteve Yin are in addition to those used by MSAA. 5004*bcb85aadSSteve Yin*/ 5005*bcb85aadSSteve Yinenum IA2EventID { 5006*bcb85aadSSteve Yin 5007*bcb85aadSSteve Yin /** The change of the number or attributes of actions of an accessible 5008*bcb85aadSSteve Yin object is signaled by events of this type. 5009*bcb85aadSSteve Yin */ 5010*bcb85aadSSteve Yin IA2_EVENT_ACTION_CHANGED = 0x101, 5011*bcb85aadSSteve Yin 5012*bcb85aadSSteve Yin /** <b>Deprecated.</b> The active descendant of a component has changed. 5013*bcb85aadSSteve Yin 5014*bcb85aadSSteve Yin Note: This event constant is misspelled and thus is deprecated and will be 5015*bcb85aadSSteve Yin removed in a later version. Please use the correctly spelled version which 5016*bcb85aadSSteve Yin follows. 5017*bcb85aadSSteve Yin */ 5018*bcb85aadSSteve Yin IA2_EVENT_ACTIVE_DECENDENT_CHANGED, 5019*bcb85aadSSteve Yin 5020*bcb85aadSSteve Yin /** The active descendant of a component has changed. The active descendant 5021*bcb85aadSSteve Yin is used in objects with transient children. 5022*bcb85aadSSteve Yin 5023*bcb85aadSSteve Yin Note: Due to the fact that MSAA's WinEvents don't allow the active child index 5024*bcb85aadSSteve Yin to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event the manages 5025*bcb85aadSSteve Yin descendants scheme can't be used. Instead the active child object has to fire 5026*bcb85aadSSteve Yin MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be 5027*bcb85aadSSteve Yin added to provide for event specific data to be passed with the event. At that 5028*bcb85aadSSteve Yin time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and 5029*bcb85aadSSteve Yin IA2_STATE_MANAGES_DESCENDANTS state would be useful. 5030*bcb85aadSSteve Yin */ 5031*bcb85aadSSteve Yin IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED, 5032*bcb85aadSSteve Yin 5033*bcb85aadSSteve Yin /** The document wide attributes of the document object have changed. 5034*bcb85aadSSteve Yin */ 5035*bcb85aadSSteve Yin IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED, 5036*bcb85aadSSteve Yin 5037*bcb85aadSSteve Yin /** The contents of the document have changed. 5038*bcb85aadSSteve Yin */ 5039*bcb85aadSSteve Yin IA2_EVENT_DOCUMENT_CONTENT_CHANGED, 5040*bcb85aadSSteve Yin 5041*bcb85aadSSteve Yin /** The loading of the document has completed. 5042*bcb85aadSSteve Yin */ 5043*bcb85aadSSteve Yin IA2_EVENT_DOCUMENT_LOAD_COMPLETE, 5044*bcb85aadSSteve Yin 5045*bcb85aadSSteve Yin /** The loading of the document was interrupted. 5046*bcb85aadSSteve Yin */ 5047*bcb85aadSSteve Yin IA2_EVENT_DOCUMENT_LOAD_STOPPED, 5048*bcb85aadSSteve Yin 5049*bcb85aadSSteve Yin /** The document contents are being reloaded. 5050*bcb85aadSSteve Yin */ 5051*bcb85aadSSteve Yin IA2_EVENT_DOCUMENT_RELOAD, 5052*bcb85aadSSteve Yin 5053*bcb85aadSSteve Yin /** The ending index of this link within the containing string has changed. 5054*bcb85aadSSteve Yin */ 5055*bcb85aadSSteve Yin IA2_EVENT_HYPERLINK_END_INDEX_CHANGED, 5056*bcb85aadSSteve Yin 5057*bcb85aadSSteve Yin /** The number of anchors associated with this hyperlink object has changed. 5058*bcb85aadSSteve Yin */ 5059*bcb85aadSSteve Yin IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED, 5060*bcb85aadSSteve Yin 5061*bcb85aadSSteve Yin /** The hyperlink selected state changed from selected to unselected or 5062*bcb85aadSSteve Yin from unselected to selected. 5063*bcb85aadSSteve Yin */ 5064*bcb85aadSSteve Yin IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED, 5065*bcb85aadSSteve Yin 5066*bcb85aadSSteve Yin /** One of the links associated with the hypertext object has been activated. 5067*bcb85aadSSteve Yin */ 5068*bcb85aadSSteve Yin IA2_EVENT_HYPERTEXT_LINK_ACTIVATED, 5069*bcb85aadSSteve Yin 5070*bcb85aadSSteve Yin /** One of the links associated with the hypertext object has been selected. 5071*bcb85aadSSteve Yin */ 5072*bcb85aadSSteve Yin IA2_EVENT_HYPERTEXT_LINK_SELECTED, 5073*bcb85aadSSteve Yin 5074*bcb85aadSSteve Yin /** The starting index of this link within the containing string has changed. 5075*bcb85aadSSteve Yin */ 5076*bcb85aadSSteve Yin IA2_EVENT_HYPERLINK_START_INDEX_CHANGED, 5077*bcb85aadSSteve Yin 5078*bcb85aadSSteve Yin /** Focus has changed from one hypertext object to another, or focus moved 5079*bcb85aadSSteve Yin from a non-hypertext object to a hypertext object, or focus moved from a 5080*bcb85aadSSteve Yin hypertext object to a non-hypertext object. 5081*bcb85aadSSteve Yin */ 5082*bcb85aadSSteve Yin IA2_EVENT_HYPERTEXT_CHANGED, 5083*bcb85aadSSteve Yin 5084*bcb85aadSSteve Yin /** The number of hyperlinks associated with a hypertext object changed 5085*bcb85aadSSteve Yin */ 5086*bcb85aadSSteve Yin IA2_EVENT_HYPERTEXT_NLINKS_CHANGED, 5087*bcb85aadSSteve Yin 5088*bcb85aadSSteve Yin /** An object's attributes changed. 5089*bcb85aadSSteve Yin Also see ::IA2_EVENT_TEXT_ATTRIBUTE_CHANGED. 5090*bcb85aadSSteve Yin */ 5091*bcb85aadSSteve Yin IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED, 5092*bcb85aadSSteve Yin 5093*bcb85aadSSteve Yin /** A slide changed in a presentation document or a page boundary was 5094*bcb85aadSSteve Yin crossed in a word processing document. 5095*bcb85aadSSteve Yin */ 5096*bcb85aadSSteve Yin IA2_EVENT_PAGE_CHANGED, 5097*bcb85aadSSteve Yin 5098*bcb85aadSSteve Yin /** The caret moved from one section to the next. 5099*bcb85aadSSteve Yin */ 5100*bcb85aadSSteve Yin IA2_EVENT_SECTION_CHANGED, 5101*bcb85aadSSteve Yin 5102*bcb85aadSSteve Yin /** A table caption changed. 5103*bcb85aadSSteve Yin */ 5104*bcb85aadSSteve Yin IA2_EVENT_TABLE_CAPTION_CHANGED, 5105*bcb85aadSSteve Yin 5106*bcb85aadSSteve Yin /** A table's column description changed. 5107*bcb85aadSSteve Yin */ 5108*bcb85aadSSteve Yin IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED, 5109*bcb85aadSSteve Yin 5110*bcb85aadSSteve Yin /** A table's column header changed. 5111*bcb85aadSSteve Yin */ 5112*bcb85aadSSteve Yin IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED, 5113*bcb85aadSSteve Yin 5114*bcb85aadSSteve Yin /** A table's data changed. 5115*bcb85aadSSteve Yin */ 5116*bcb85aadSSteve Yin IA2_EVENT_TABLE_MODEL_CHANGED, 5117*bcb85aadSSteve Yin 5118*bcb85aadSSteve Yin /** A table's row description changed. 5119*bcb85aadSSteve Yin */ 5120*bcb85aadSSteve Yin IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED, 5121*bcb85aadSSteve Yin 5122*bcb85aadSSteve Yin /** A table's row header changed. 5123*bcb85aadSSteve Yin */ 5124*bcb85aadSSteve Yin IA2_EVENT_TABLE_ROW_HEADER_CHANGED, 5125*bcb85aadSSteve Yin 5126*bcb85aadSSteve Yin /** A table's summary changed. 5127*bcb85aadSSteve Yin */ 5128*bcb85aadSSteve Yin IA2_EVENT_TABLE_SUMMARY_CHANGED, 5129*bcb85aadSSteve Yin 5130*bcb85aadSSteve Yin /** A text object's attributes changed. 5131*bcb85aadSSteve Yin Also see ::IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED. 5132*bcb85aadSSteve Yin */ 5133*bcb85aadSSteve Yin IA2_EVENT_TEXT_ATTRIBUTE_CHANGED, 5134*bcb85aadSSteve Yin 5135*bcb85aadSSteve Yin /** The caret has moved to a new position. 5136*bcb85aadSSteve Yin */ 5137*bcb85aadSSteve Yin IA2_EVENT_TEXT_CARET_MOVED, 5138*bcb85aadSSteve Yin 5139*bcb85aadSSteve Yin /** <b>Deprecated.</b> This event is equivalent to ::IA2_EVENT_TEXT_UPDATED. 5140*bcb85aadSSteve Yin */ 5141*bcb85aadSSteve Yin IA2_EVENT_TEXT_CHANGED, 5142*bcb85aadSSteve Yin 5143*bcb85aadSSteve Yin /** The caret moved from one column to the next. 5144*bcb85aadSSteve Yin */ 5145*bcb85aadSSteve Yin IA2_EVENT_TEXT_COLUMN_CHANGED, 5146*bcb85aadSSteve Yin 5147*bcb85aadSSteve Yin /** Text was inserted. 5148*bcb85aadSSteve Yin */ 5149*bcb85aadSSteve Yin IA2_EVENT_TEXT_INSERTED, 5150*bcb85aadSSteve Yin 5151*bcb85aadSSteve Yin /** Text was removed. 5152*bcb85aadSSteve Yin */ 5153*bcb85aadSSteve Yin IA2_EVENT_TEXT_REMOVED, 5154*bcb85aadSSteve Yin 5155*bcb85aadSSteve Yin /** This event indicates general text changes, i.e. changes to text that are 5156*bcb85aadSSteve Yin exposed through the IAccessibleText interface. For compatibility with ATK/AT-SPI 5157*bcb85aadSSteve Yin which does not have an equivalent event, servers can alternatively fire 5158*bcb85aadSSteve Yin ::IA2_EVENT_TEXT_REMOVED and ::IA2_EVENT_TEXT_INSERTED. 5159*bcb85aadSSteve Yin */ 5160*bcb85aadSSteve Yin IA2_EVENT_TEXT_UPDATED, 5161*bcb85aadSSteve Yin 5162*bcb85aadSSteve Yin /** The text selection changed. Later versions of Microsoft development environments 5163*bcb85aadSSteve Yin have an equivalent event identified, EVENT_OBJECT_TEXTSELECTIONCHANGED. Servers 5164*bcb85aadSSteve Yin should use that if it is available and use IA2_EVENT_TEXT_SELECTION_CHANGED otherwise. 5165*bcb85aadSSteve Yin Clients should be prepared to respond to either event. 5166*bcb85aadSSteve Yin 5167*bcb85aadSSteve Yin */ 5168*bcb85aadSSteve Yin IA2_EVENT_TEXT_SELECTION_CHANGED, 5169*bcb85aadSSteve Yin 5170*bcb85aadSSteve Yin /** A visible data event indicates the change of the visual appearance 5171*bcb85aadSSteve Yin of an accessible object. This includes for example most of the 5172*bcb85aadSSteve Yin attributes available via the IAccessibleComponent interface. 5173*bcb85aadSSteve Yin */ 5174*bcb85aadSSteve Yin IA2_EVENT_VISIBLE_DATA_CHANGED 5175*bcb85aadSSteve Yin 5176*bcb85aadSSteve Yin}; 5177*bcb85aadSSteve Yin/************************************************************************* 5178*bcb85aadSSteve Yin * 5179*bcb85aadSSteve Yin * File Name (AccessibleApplication.idl) 5180*bcb85aadSSteve Yin * 5181*bcb85aadSSteve Yin * IAccessible2 IDL Specification 5182*bcb85aadSSteve Yin * 5183*bcb85aadSSteve Yin * Copyright (c) 2007, 2010 Linux Foundation 5184*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 5185*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 5186*bcb85aadSSteve Yin * All rights reserved. 5187*bcb85aadSSteve Yin * 5188*bcb85aadSSteve Yin * 5189*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 5190*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 5191*bcb85aadSSteve Yin * are met: 5192*bcb85aadSSteve Yin * 5193*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 5194*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 5195*bcb85aadSSteve Yin * 5196*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 5197*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 5198*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 5199*bcb85aadSSteve Yin * provided with the distribution. 5200*bcb85aadSSteve Yin * 5201*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 5202*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 5203*bcb85aadSSteve Yin * derived from this software without specific prior written 5204*bcb85aadSSteve Yin * permission. 5205*bcb85aadSSteve Yin * 5206*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 5207*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 5208*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 5209*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 5210*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 5211*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 5212*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 5213*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 5214*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 5215*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 5216*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 5217*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 5218*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5219*bcb85aadSSteve Yin * 5220*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 5221*bcb85aadSSteve Yin * BSD License" as published at: 5222*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 5223*bcb85aadSSteve Yin * 5224*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 5225*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 5226*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 5227*bcb85aadSSteve Yin * 5228*bcb85aadSSteve Yin ************************************************************************/ 5229*bcb85aadSSteve Yin 5230*bcb85aadSSteve Yin 5231*bcb85aadSSteve Yin 5232*bcb85aadSSteve Yin 5233*bcb85aadSSteve Yin 5234*bcb85aadSSteve Yin 5235*bcb85aadSSteve Yin/** @brief This interface gives access to the application's name and version information. 5236*bcb85aadSSteve Yin 5237*bcb85aadSSteve Yin This interface provides the AT with the information it needs to differentiate 5238*bcb85aadSSteve Yin this application from other applications, from other versions of this 5239*bcb85aadSSteve Yin application, or from other versions of this application running on different 5240*bcb85aadSSteve Yin versions of an accessibility bridge or accessibility toolkit. 5241*bcb85aadSSteve Yin 5242*bcb85aadSSteve Yin Servers implementing IAccessible2 should provide access to the %IAccessibleApplication 5243*bcb85aadSSteve Yin interface via QueryService from any object so that ATs can easily determine specific 5244*bcb85aadSSteve Yin information about the application such as its name or version. 5245*bcb85aadSSteve Yin*/ 5246*bcb85aadSSteve Yin[object, uuid(D49DED83-5B25-43F4-9B95-93B44595979E)] 5247*bcb85aadSSteve Yininterface IAccessibleApplication : IUnknown 5248*bcb85aadSSteve Yin{ 5249*bcb85aadSSteve Yin 5250*bcb85aadSSteve Yin /** @brief Returns the application name. 5251*bcb85aadSSteve Yin @param [out] name 5252*bcb85aadSSteve Yin @retval S_OK 5253*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 5254*bcb85aadSSteve Yin */ 5255*bcb85aadSSteve Yin [propget] HRESULT appName 5256*bcb85aadSSteve Yin ( 5257*bcb85aadSSteve Yin [out, retval] BSTR *name 5258*bcb85aadSSteve Yin ); 5259*bcb85aadSSteve Yin 5260*bcb85aadSSteve Yin /** @brief Returns the application version. 5261*bcb85aadSSteve Yin @param [out] version 5262*bcb85aadSSteve Yin The version string must not contain levels when it is know beforehand that 5263*bcb85aadSSteve Yin this information will never require a change in a client's behavior. 5264*bcb85aadSSteve Yin For example, use "3.6.0" rather than "3.6.0.v201005131500". 5265*bcb85aadSSteve Yin @retval S_OK 5266*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 5267*bcb85aadSSteve Yin */ 5268*bcb85aadSSteve Yin [propget] HRESULT appVersion 5269*bcb85aadSSteve Yin ( 5270*bcb85aadSSteve Yin [out, retval] BSTR *version 5271*bcb85aadSSteve Yin ); 5272*bcb85aadSSteve Yin 5273*bcb85aadSSteve Yin /** @brief Returns the toolkit/bridge name. 5274*bcb85aadSSteve Yin @param [out] name 5275*bcb85aadSSteve Yin @retval S_OK 5276*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 5277*bcb85aadSSteve Yin */ 5278*bcb85aadSSteve Yin [propget] HRESULT toolkitName 5279*bcb85aadSSteve Yin ( 5280*bcb85aadSSteve Yin [out, retval] BSTR *name 5281*bcb85aadSSteve Yin ); 5282*bcb85aadSSteve Yin 5283*bcb85aadSSteve Yin /** @brief Returns the toolkit/bridge version. 5284*bcb85aadSSteve Yin @param [out] version 5285*bcb85aadSSteve Yin The version string must not contain levels when it is know beforehand that 5286*bcb85aadSSteve Yin this information will never require a change in a client's behavior. 5287*bcb85aadSSteve Yin For example, use "3.6.0" rather than "3.6.0.v201005131500". 5288*bcb85aadSSteve Yin @retval S_OK 5289*bcb85aadSSteve Yin @retval S_FALSE if there is nothing to return, [out] value is NULL 5290*bcb85aadSSteve Yin */ 5291*bcb85aadSSteve Yin [propget] HRESULT toolkitVersion 5292*bcb85aadSSteve Yin ( 5293*bcb85aadSSteve Yin [out, retval] BSTR *version 5294*bcb85aadSSteve Yin ); 5295*bcb85aadSSteve Yin 5296*bcb85aadSSteve Yin} 5297*bcb85aadSSteve Yin 5298*bcb85aadSSteve Yin/************************************************************************* 5299*bcb85aadSSteve Yin * 5300*bcb85aadSSteve Yin * File Name (AccessibleDocument.idl) 5301*bcb85aadSSteve Yin * 5302*bcb85aadSSteve Yin * IAccessible2 IDL Specification 5303*bcb85aadSSteve Yin * 5304*bcb85aadSSteve Yin * Copyright (c) 2013 Linux Foundation 5305*bcb85aadSSteve Yin * All rights reserved. 5306*bcb85aadSSteve Yin * 5307*bcb85aadSSteve Yin * 5308*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 5309*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 5310*bcb85aadSSteve Yin * are met: 5311*bcb85aadSSteve Yin * 5312*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 5313*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 5314*bcb85aadSSteve Yin * 5315*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 5316*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 5317*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 5318*bcb85aadSSteve Yin * provided with the distribution. 5319*bcb85aadSSteve Yin * 5320*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 5321*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 5322*bcb85aadSSteve Yin * derived from this software without specific prior written 5323*bcb85aadSSteve Yin * permission. 5324*bcb85aadSSteve Yin * 5325*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 5326*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 5327*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 5328*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 5329*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 5330*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 5331*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 5332*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 5333*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 5334*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 5335*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 5336*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 5337*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5338*bcb85aadSSteve Yin * 5339*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 5340*bcb85aadSSteve Yin * BSD License" as published at: 5341*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 5342*bcb85aadSSteve Yin * 5343*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 5344*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 5345*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 5346*bcb85aadSSteve Yin * 5347*bcb85aadSSteve Yin ************************************************************************/ 5348*bcb85aadSSteve Yin 5349*bcb85aadSSteve Yin 5350*bcb85aadSSteve Yin 5351*bcb85aadSSteve Yin 5352*bcb85aadSSteve Yin 5353*bcb85aadSSteve Yin/** @brief This interface represents documents. 5354*bcb85aadSSteve Yin 5355*bcb85aadSSteve Yin This interface is used for a representation of documents. 5356*bcb85aadSSteve Yin*/ 5357*bcb85aadSSteve Yin[object, uuid(C48C7FCF-4AB5-4056-AFA6-902D6E1D1149)] 5358*bcb85aadSSteve Yininterface IAccessibleDocument : IUnknown 5359*bcb85aadSSteve Yin{ 5360*bcb85aadSSteve Yin /** @brief Returns the most recently used anchor target within a document. 5361*bcb85aadSSteve Yin 5362*bcb85aadSSteve Yin A document's most recently targeted in-page anchor is returned. A typical use 5363*bcb85aadSSteve Yin of this method is to fetch the anchor target within an HTML document. In this 5364*bcb85aadSSteve Yin case anchor targets are those which have been defined with the <a> tag. 5365*bcb85aadSSteve Yin 5366*bcb85aadSSteve Yin @param [out] accessible 5367*bcb85aadSSteve Yin @retval S_OK 5368*bcb85aadSSteve Yin @retval S_FALSE if there are no existing valid anchor targets, [out] value is NULL. 5369*bcb85aadSSteve Yin */ 5370*bcb85aadSSteve Yin [propget] HRESULT anchorTarget 5371*bcb85aadSSteve Yin ( 5372*bcb85aadSSteve Yin [out, retval] IUnknown **accessible 5373*bcb85aadSSteve Yin ); 5374*bcb85aadSSteve Yin 5375*bcb85aadSSteve Yin} 5376*bcb85aadSSteve Yin/************************************************************************* 5377*bcb85aadSSteve Yin * 5378*bcb85aadSSteve Yin * File Name (IA2TypeLibrary.idl) 5379*bcb85aadSSteve Yin * 5380*bcb85aadSSteve Yin * IAccessible2 IDL Specification 5381*bcb85aadSSteve Yin * 5382*bcb85aadSSteve Yin * Copyright (c) 2007, 2012 Linux Foundation 5383*bcb85aadSSteve Yin * Copyright (c) 2006 IBM Corporation 5384*bcb85aadSSteve Yin * Copyright (c) 2000, 2006 Sun Microsystems, Inc. 5385*bcb85aadSSteve Yin * All rights reserved. 5386*bcb85aadSSteve Yin * 5387*bcb85aadSSteve Yin * 5388*bcb85aadSSteve Yin * Redistribution and use in source and binary forms, with or without 5389*bcb85aadSSteve Yin * modification, are permitted provided that the following conditions 5390*bcb85aadSSteve Yin * are met: 5391*bcb85aadSSteve Yin * 5392*bcb85aadSSteve Yin * 1. Redistributions of source code must retain the above copyright 5393*bcb85aadSSteve Yin * notice, this list of conditions and the following disclaimer. 5394*bcb85aadSSteve Yin * 5395*bcb85aadSSteve Yin * 2. Redistributions in binary form must reproduce the above 5396*bcb85aadSSteve Yin * copyright notice, this list of conditions and the following 5397*bcb85aadSSteve Yin * disclaimer in the documentation and/or other materials 5398*bcb85aadSSteve Yin * provided with the distribution. 5399*bcb85aadSSteve Yin * 5400*bcb85aadSSteve Yin * 3. Neither the name of the Linux Foundation nor the names of its 5401*bcb85aadSSteve Yin * contributors may be used to endorse or promote products 5402*bcb85aadSSteve Yin * derived from this software without specific prior written 5403*bcb85aadSSteve Yin * permission. 5404*bcb85aadSSteve Yin * 5405*bcb85aadSSteve Yin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 5406*bcb85aadSSteve Yin * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 5407*bcb85aadSSteve Yin * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 5408*bcb85aadSSteve Yin * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 5409*bcb85aadSSteve Yin * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 5410*bcb85aadSSteve Yin * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 5411*bcb85aadSSteve Yin * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 5412*bcb85aadSSteve Yin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 5413*bcb85aadSSteve Yin * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 5414*bcb85aadSSteve Yin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 5415*bcb85aadSSteve Yin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 5416*bcb85aadSSteve Yin * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 5417*bcb85aadSSteve Yin * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5418*bcb85aadSSteve Yin * 5419*bcb85aadSSteve Yin * This BSD License conforms to the Open Source Initiative "Simplified 5420*bcb85aadSSteve Yin * BSD License" as published at: 5421*bcb85aadSSteve Yin * http://www.opensource.org/licenses/bsd-license.php 5422*bcb85aadSSteve Yin * 5423*bcb85aadSSteve Yin * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 5424*bcb85aadSSteve Yin * mark may be used in accordance with the Linux Foundation Trademark 5425*bcb85aadSSteve Yin * Policy to indicate compliance with the IAccessible2 specification. 5426*bcb85aadSSteve Yin * 5427*bcb85aadSSteve Yin ************************************************************************/ 5428*bcb85aadSSteve Yin 5429*bcb85aadSSteve Yin// This is not a standalone file. It is to be appended to the end of the 5430*bcb85aadSSteve Yin// merged IDL file. 5431*bcb85aadSSteve Yin 5432*bcb85aadSSteve Yincpp_quote("") 5433*bcb85aadSSteve Yincpp_quote("// Type Library Definitions") 5434*bcb85aadSSteve Yincpp_quote("") 5435*bcb85aadSSteve Yin 5436*bcb85aadSSteve Yin[ 5437*bcb85aadSSteve Yin uuid(CE3F726E-D1D3-44FE-B995-FF1DB3B48B2B), 5438*bcb85aadSSteve Yin helpstring("IAccessible2 Type Library"), 5439*bcb85aadSSteve Yin version(1.3), 5440*bcb85aadSSteve Yin hidden 5441*bcb85aadSSteve Yin] 5442*bcb85aadSSteve Yin 5443*bcb85aadSSteve Yinlibrary IAccessible2Lib 5444*bcb85aadSSteve Yin{ 5445*bcb85aadSSteve Yin importlib ("stdole2.tlb"); 5446*bcb85aadSSteve Yin importlib ("oleacc.dll"); 5447*bcb85aadSSteve Yin interface IAccessible2; 5448*bcb85aadSSteve Yin interface IAccessible2_2; 5449*bcb85aadSSteve Yin interface IAccessibleAction; 5450*bcb85aadSSteve Yin interface IAccessibleApplication; 5451*bcb85aadSSteve Yin interface IAccessibleComponent; 5452*bcb85aadSSteve Yin interface IAccessibleDocument; 5453*bcb85aadSSteve Yin interface IAccessibleEditableText; 5454*bcb85aadSSteve Yin interface IAccessibleHyperlink; 5455*bcb85aadSSteve Yin interface IAccessibleHypertext; 5456*bcb85aadSSteve Yin interface IAccessibleHypertext2; 5457*bcb85aadSSteve Yin interface IAccessibleImage; 5458*bcb85aadSSteve Yin interface IAccessibleRelation; 5459*bcb85aadSSteve Yin interface IAccessibleTable; 5460*bcb85aadSSteve Yin interface IAccessibleTable2; 5461*bcb85aadSSteve Yin interface IAccessibleTableCell; 5462*bcb85aadSSteve Yin interface IAccessibleText; 5463*bcb85aadSSteve Yin interface IAccessibleText2; 5464*bcb85aadSSteve Yin interface IAccessibleValue; 5465*bcb85aadSSteve Yin enum IA2CoordinateType; 5466*bcb85aadSSteve Yin enum IA2EventID; 5467*bcb85aadSSteve Yin enum IA2Role; 5468*bcb85aadSSteve Yin enum IA2ScrollType; 5469*bcb85aadSSteve Yin enum IA2States; 5470*bcb85aadSSteve Yin enum IA2TableModelChangeType; 5471*bcb85aadSSteve Yin enum IA2TextBoundaryType; 5472*bcb85aadSSteve Yin enum IA2TextSpecialOffsets; 5473*bcb85aadSSteve Yin} 5474