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