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