diff options
Diffstat (limited to 'src/3rdparty/iaccessible2/idl')
22 files changed, 5478 insertions, 4981 deletions
diff --git a/src/3rdparty/iaccessible2/idl/Accessible2.idl b/src/3rdparty/iaccessible2/idl/Accessible2.idl deleted file mode 100644 index 6a0d750483..0000000000 --- a/src/3rdparty/iaccessible2/idl/Accessible2.idl +++ /dev/null @@ -1,679 +0,0 @@ -/************************************************************************* - * - * File Name (Accessible2.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -/** @mainpage - - @section _interfaces Interfaces - IAccessible2\n - IAccessibleAction\n - IAccessibleApplication\n - IAccessibleComponent\n - IAccessibleHypertext\n - IAccessibleHyperlink\n - IAccessibleImage\n - IAccessibleRelation\n - IAccessibleTable [Deprecated]\n - IAccessibleTable2\n - IAccessibleTableCell\n - IAccessibleText\n - IAccessibleEditableText\n - IAccessibleValue - - @section _structs Structs - IA2Locale\n - IA2TableModelChange\n - IA2TextSegment - - @section _enums Enums - ::IA2CoordinateType values define the requested coordinate type (screen or parent window).\n - ::IA2EventID values identify events.\n - ::IA2Role values defines roles which are in addition to the existing MSAA roles.\n - ::IA2ScrollType values define where to place an object or substring on the screen.\n - ::IA2States values define states which are in addition to the existing MSAA states.\n - ::IA2TableModelChangeType values describe the kinds of changes made to a table (insert, delete, update).\n - ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph).\n - ::IA2TextSpecialOffsets values define special offsets for use in the text interfaces. - - @section _constants Constants - @ref grpRelations - - @section _misc Miscellaneous - @ref _licensePage "BSD License"\n - @ref _generalInfo "General Information"\n - - @page _licensePage BSD License - %IAccessible2 IDL Specification - - Copyright (c) 2007, 2010 Linux Foundation\n - Copyright (c) 2006 IBM Corporation\n - Copyright (c) 2000, 2006 Sun Microsystems, Inc.\n - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - 3. Neither the name of the Linux Foundation nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - This BSD License conforms to the Open Source Initiative "Simplified - BSD License" as published at: - http://www.opensource.org/licenses/bsd-license.php - - %IAccessible2 is a trademark of the Linux Foundation. The %IAccessible2 - mark may be used in accordance with the - <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/trademark-policy"> - Linux Foundation Trademark Policy</a> to indicate compliance with the %IAccessible2 specification. - - @page _generalInfo General Information - The following information is applicable to two or more interfaces. - - @ref _errors\n - @ref _memory\n - @ref _arrayConsideration\n - @ref _indexes\n - @ref _enums\n - @ref _specialOffsets\n - @ref _dicoveringInterfaces\n - @ref _changingInterfaces\n - @ref _applicationInfo\n - @ref _childIDs\n - @ref _variants\n - @ref _iaaction-iahyperlink\n - @ref _trademark - - @section _errors Error Handling - HRESULT values are defined by the Microsoft® Win32® API. For more information, refer to - <a href="http://msdn2.microsoft.com/en-us/library/bb401631.aspx">Interpreting HRESULT Values</a> - in MSDN®. - - Note that the S_FALSE return value is considered a non-error value and the - SUCCEEDED macro will return TRUE. S_FALSE is used when there is no failure - but there was nothing valid to return, e.g. in IAccessible2::attributes when - there are no attributes. When S_FALSE is returned [out] pointer types should - be NULL and [out] longs should generally be 0, but sometimes -1 is used such - as IAccessible2::indexInParent, IAccessibleText::caretOffset, and - IAccessibleHypertext::hyperlinkIndex. - - Note that for BSTR [out] variables common COM practice is that the server does - the SysAllocString and the client does the SysFreeString. Also note that when - NULL is returned there is no need for the client to call SysFreeString. Please - refer to the documentation for each method for more details regarding error handling. - - @section _memory Memory Management - The following memory management issues should be considered: - @li Although [out] BSTR variables are declared by the client, their space is - allocated by the server. They need to be freed with SysFreeString by the - client at end of life; the same is true when BSTRs are used in structs or - arrays which are passed to the server. - @li If there is no valid [out] BSTR to return, the server should return S_FALSE and - assign NULL to the output, e.g. *theOutBSTR = NULL;. - @li COM interfaces need to be referenced with AddRef when used and dereferenced - with Release at end of life. - @li Single [out] longs, HWNDs, booleans, and structs are declared by the caller - and passed by reference. The marshaller does all the memory management. - - The following articles may be helpful for understanding memory management issues: - @li An article by Don Box in a - <a href="http://www.microsoft.com/msj/1196/activex1196.aspx">Q & A section</a> - of the November 1996 edition of the Microsoft Systems Journal. - @li A posting to a CodeGuru forum, - <a href="http://www.codeguru.com/forum/showthread.php?t=364511">Windows SDK - String: What are the rules for BSTR allocation and deallocation?</a> - - @subsection _arrayConsideration Special Consideration when using Arrays - There are several methods which return arrays. In the case of IAccessible2::relations - and IAccessibleRelation::targets the client must allocate and free the arrays. - - For the remaining methods which return arrays, the server must allocate the array - and the client must free the array when no longer needed. These methods are - IAccessible2::extendedStates, IAccessible2::localizedExtendedStates, - IAccessibleAction::keyBinding, IAccessibleTable2::selectedCells, - IAccessibleTable2::selectedColumns, and IAccessibleTable2::selectedRows. For - those methods, the server must allocate both the top level array and any storage - associated with it, e.g. for BSTRs. The server must allocate the arrays with - CoTaskMemAlloc and any BSTRs with SysAllocString. The client must use CoTaskMemFree - to free the array and any BSTRs must be freed with SysFreeString. - - Also, the IDL for those six methods includes an extraneous [in] parameter for the - caller to specify the max size of the array. This parameter will be ignored by - the COM server. - - @section _indexes Zero and One Based Indexes - Unless otherwise specified all offsets and indexes are 0 based. - - @section _enums Enums - Note that enums start at 0. - - @section _specialOffsets Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods - IAccessibleText and IAccessibleEditableText can use one or more of the following - special offset values. They are defined in the ::IA2TextSpecialOffsets enum. - @li Using ::IA2_TEXT_OFFSET_LENGTH (-1) as an offset in any of the IAccessibleText or - IAccessibleEditableText methods is the same as specifying the length of the string. - @li Using ::IA2_TEXT_OFFSET_CARET (-2) as an offset for IAccessibleText::textBeforeOffset, - IAccessibleText::textAtOffset, and IAccessibleText::textAfterOffset indicates that the - text related to the physical location of the caret should be used. This is needed for - applications that consider the character offset of the end of one line (as reached by - pressing the End key) the same as the offset of the first character on the next line. - Since the same offset is associated with two different lines a special means is needed - to fetch text from the line where the caret is physically located. - - @section _dicoveringInterfaces Discovery of Interfaces - In general AT (Assistive Technology) should try IAccessible2 interfaces, followed by using - the MSAA (Microsoft® Active Accessibility®) interfaces. (In cases where the an application - is known to have custom interfaces which provide information not supplied by IAccessible2 - or MSAA, then those custom interfaces can be used.) The AT can then, by default, support - unknown IAccessible2/MSAA applications, without the application developers having to request - AT vendors for support on an individual application by application basis. - - When you have a reference to an IAccessible and require a reference to an IAccessible2 use - QueryService as follows: - @code - // pAcc is a reference to the accessible object's IAccessible interface. - IServiceProvider *pService = NULL; - hr = pAcc->QueryInterface(IID_IServiceProvider, (void **)&pService); - if(SUCCEEDED(hr)) { - IAccessible2 *pIA2 = NULL; - hr = pService->QueryService(IID_IAccessible, IID_IAccessible2, (void**)&pIA2); - if (SUCCEEDED(hr) && pIA2) { - // The control supports IAccessible2. - // pIA2 is the reference to the accessible object's IAccessible2 interface. - } - } - @endcode - - @section _changingInterfaces Changing between Accessible Interfaces - Note that developers must always implement MSAA's IAccessible and, if needed, some - of the interfaces in the set of IAccessible2 interfaces. Although the IAccessible2 - IDL is coded such that IAccessible2 is a subclass of MSAA's IAccessible, none of - MSAA's IAccessible methods are redefined by IAccessible2. - - QueryService must be used to switch from a reference to an MSAA IAccessible interface - to another interface. This has been - <a href="http://www.accessinteropalliance.org/docs/Introducing_IAccessibleEx.doc"> - documented by Microsoft</a> and the pertinent facts have been extracted below: - - @par - Why use QueryService instead of just using QueryInterface to get IAccessibleEx - directly? The reason is that since MSAA 2.0, clients don't talk to a server's - IAccessible interface directly; instead they talk to an intermediate MSAA-provided - wrapper that calls through to the original IAccessible. This wrapper provides services - such as implementing IDispatch, supplying information from MSAA 2.0's Dynamic Annotation - service, and scaling locations when running on Windows Vista with DPI scaling enabled. - QueryService is the supported way to expose additional interfaces from an existing - IAccessible and was originally used by MSHTML to expose IHTMLElement objects corresponding - to IAccessibles. QueryService is often more convenient for servers to implement than - QueryInterface because it does not have the same requirements for preserving object - identity or symmetry/transitivity as QueryInterface, so QueryService allows servers to - easily implement the interface on the same object or a separate object. The latter is - often hard to do with QueryInterface unless the original object supports aggregation. - - Two related references in MSDN® are: - @li <a href="http://msdn.microsoft.com/en-us/library/ms696078(VS.85).aspx"> - "Using QueryService to expose a native object model interface for an IAccessible object"</a> - @li <a href="http://msdn.microsoft.com/en-us/library/ms528415.aspx#acc_obj"> - "Accessing the Internet Explorer Object Associated with an Accessible Object"</a> - - Based on this information from Microsoft, QueryService must be used to switch back and forth - between a reference to an MSAA IAccessible interface and any of the IAccessible2 interfaces. - - Regarding switching between any of the IAccessible2 interfaces, applications implementing - IAccessible2 should implement the IAccessible2 interfaces on a single object since ATs - will be using QueryInterface to switch between the IAccessilbe2 interfaces. Implementing - the IAccessible2 interfaces on separate objects would require the use of QueryService. - There is one exception, IAccessibleApplication can be implemented on a separate object so - its common code doesn't have to be included in each accessible object. ATs should use - QueryService to access IAccessibleApplication. - - @section _applicationInfo Access to Information about the Application - Servers implementing IAccessible2 should provide access to the IAccessibleApplication - interface via QueryService from any object so that ATs can easily determine specific - information about the application such as its name or version. - - @section _childIDs Child IDs - The IAccessible2 interfaces do not support child IDs, i.e. simple child elements. - Full accessible objects must be created for each object that supports IAccessible2. - Therefore MSAA's get_accChild should never return a child ID (other than CHILDID_SELF) - for an object that implements any of the IAccessible2 interfaces. - - Microsoft's UI Automation specification has the same limitation and this was resolved - in the UI Automation Express specification by adding IAccessibleEx::GetObjectForChild - and IAccessibleEx::GetIAccessiblePair. These methods allow mapping back and forth - between an IAccessibleEx and an {IAccessible, Child ID} pair. A future version of - IAccessible2 may include similar methods to map back and forth between an IAccessible2 - and an {IAccessible, Child ID} pair. - - @section _variants VARIANTs - Some methods return a VARIANT. Implementers need to make sure that the return type is - specified, i.e. VT_I4, VT_IDISPATCH, etc. The methods that return VARIANTs are - IAccessibleHyperlink::anchor, IAccessibleHyperlink::anchorTarget, IAccessibleValue::currentValue, - IAccessibleValue::maximumValue, IAccessibleValue::minimumValue. - - @section _iaaction-iahyperlink IAccessibleHyperlink as subclass of IAccessibleAction - In this version of the IDL, IAccessibleHyperlink is a subclass of IAccessibleAction. - However, there is no practical need for that inheritance and in some cases, such as - an image map of smart tags, it doesn't make sense because such an image map doesn't - have actionable objects; it's the secondary smart tags that are actionable. As a - result, implementations should not rely on the inheritance as it may be removed in - a later version of the IDL. - - @section _trademark Trademark Attribution - The names of actual companies and products mentioned herein may be the trademarks of - their respective owners. In particular, Active Accessibility, Microsoft, MSDN, and Win32 - are trademarks of the Microsoft group of companies in the U.S.A. and/or other countries. - -**/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "AccessibleRelation.idl"; -import "AccessibleStates.idl"; -import "IA2CommonTypes.idl"; - -/** A structure defining the locale of an accessible object. - -IAccessible2::locale returns this struct. -*/ -typedef struct IA2Locale { - BSTR language; ///< ISO 639-1 Alpha-2 two character language code - BSTR country; ///< ISO 3166-1 Alpha-2 two character country code - BSTR variant; ///< Application specific variant of the locale -} IA2Locale; - -/** @brief This interface exposes the primary set of information about an - IAccessible2 enabled accessible object. - - This interface must always be provided for objects that support some - portion of the collection of the %IAccessible2 interfaces. - - Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces" - for special considerations related to use of the MSAA IAccessible interface and - the set of %IAccessible2 interfaces. - */ -[object, uuid(E89F726E-C4F4-4c19-BB19-B647D7FA8478)] -interface IAccessible2 : IAccessible -{ - - /** @brief Returns the number of accessible relations for this object. - @param [out] nRelations - @retval S_OK - */ - [propget] HRESULT nRelations - ( - [out, retval] long *nRelations - ); - - /** @brief Returns one accessible relation for this object. - @param [in] relationIndex - 0 based - @param [out] relation - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT relation - ( - [in] long relationIndex, - [out, retval] IAccessibleRelation **relation - ); - - /** @brief Returns multiple accessible relations for this object. - @param [in] maxRelations - maximum size of the array allocated by the client - @param [out] relations - The array of accessible relation objects. Note that this array is to be - allocated by the client and freed when no longer needed. Refer to @ref - _arrayConsideration "Special Consideration when using Arrays" for more details. - @param [out] nRelations - actual number of relations in the returned array (not more than maxRelations) - @retval S_OK - @retval S_FALSE if there are no relations, nRelations is set to 0 - */ - [propget] HRESULT relations - ( - [in] long maxRelations, - [out, size_is(maxRelations), length_is(*nRelations)] - IAccessibleRelation **relations, - [out, retval] long *nRelations - ); - - /** @brief Returns the role of an %IAccessible2 object. - @param [out] role - The role of an %IAccessible2 object. - @retval S_OK - @note - @li For convenience MSAA roles are also passed through this method so the - AT doesn't have to also fetch roles through MSAA's get_accRole. - @li %IAccessible2 roles should not be passed through MSAA's get_accRole. - @li For compatibility with non IAccessible2 enabled ATs, IAccessible2 - applications should also add support to get_accRole to return the closest - MSAA role or ROLE_SYSTEM_CLIENT (the MSAA defined default role) if there - is not a good match. - @li This method is missing a [propget] prefix in the IDL. The result is the - method is named role in generated C++ code instead of get_role. - */ - HRESULT role - ( - [out, retval] long *role - ); - - /** @brief Makes an object visible on the screen. - @param [in] scrollType - Defines where the object should be placed on the screen. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT scrollTo - ( - [in] enum IA2ScrollType scrollType - ); - - /** @brief Moves the top left of an object to a specified location. - - @param [in] coordinateType - Specifies whether the coordinates are relative to the screen or the parent object. - @param [in] x - Defines the x coordinate. - @param [in] y - Defines the y coordinate. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT scrollToPoint - ( - [in] enum IA2CoordinateType coordinateType, - [in] long x, - [in] long y - ); - - /** @brief Returns grouping information. - - Used for tree items, list items, tab panel labels, radio buttons, etc. - Also used for collections of non-text objects. - - @param [out] groupLevel - 1 based, 0 indicates that this value is not applicable - @param [out] similarItemsInGroup - 1 based, 0 indicates that this value is not applicable - @param [out] positionInGroup - 1 based, 0 indicates that this value is not applicable. This is an index - into the objects in the current group, not an index into all the objects - at the same group level. - @retval S_OK if at least one value is valid - @retval S_FALSE if no values are valid, [out] values are 0s - @note This method is meant to describe the nature of an object's containment - structure. It's exposed by trees, tree grids, nested lists, nested menus, - but not headings, which uses the level object attribute. It is also exposed - by radio buttons (with groupLevel == 0). - @note This is normally not implemented on a combo box to describe the nature - of its contents. Normally an AT will get that information from its child list - object. However, in some cases when non-edit combo boxes are not able to be structured - such that the list is a child of the combo box, this method is implemented on - the combo box itself. ATs can use this interface if a child list is not found. - */ - [propget] HRESULT groupPosition - ( - [out] long *groupLevel, - [out] long *similarItemsInGroup, - [out, retval] long *positionInGroup - ); - - /** @brief Returns the bit strip containing any IAccessible2 states. - - The IAccessible2 states are in addition to the MSAA states and are defined in - the IA2States enum. - - @param [out] states - @retval S_OK - */ - [propget] HRESULT states - ( - [out, retval] AccessibleStates *states - ); - - /** @brief Returns the extended role. - - An extended role is a role which is dynamically generated by the application. - It is not predefined by the %IAccessible2 specification. - - @param [out] extendedRole - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT extendedRole - ( - [out, retval] BSTR *extendedRole - ); - - /** @brief Returns the localized extended role. - @param [out] localizedExtendedRole - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT localizedExtendedRole - ( - [out, retval] BSTR *localizedExtendedRole - ); - - /** @brief Returns the number of extended states. - @param [out] nExtendedStates - @retval S_OK - */ - [propget] HRESULT nExtendedStates - ( - [out, retval] long *nExtendedStates - ); - - /** @brief Returns the extended states (array of strings). - - An extended state is a state which is dynamically generated by the application. - It is not predefined by the %IAccessible2 specification. - - @param [in] maxExtendedStates - This parameter is ignored. Refer to @ref _arrayConsideration - "Special Consideration when using Arrays" for more details. - @param [out] extendedStates - This array is allocated by the server. Free it with CoTaskMemFree. - @param [out] nExtendedStates - The number of extended states returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively - */ - [propget] HRESULT extendedStates - ( - [in] long maxExtendedStates, - [out, size_is(,maxExtendedStates), length_is(,*nExtendedStates)] BSTR **extendedStates, - [out, retval] long *nExtendedStates - ); - - /** @brief Returns the localized extended states (array of strings). - @param [in] maxLocalizedExtendedStates - This parameter is ignored. Refer to @ref _arrayConsideration - "Special Consideration when using Arrays" for more details. - @param [out] localizedExtendedStates - This array is allocated by the server. Free it with CoTaskMemFree. - @param [out] nLocalizedExtendedStates - The number of localized extended states returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively - */ - [propget] HRESULT localizedExtendedStates - ( - [in] long maxLocalizedExtendedStates, - [out, size_is(,maxLocalizedExtendedStates), length_is(,*nLocalizedExtendedStates)] BSTR **localizedExtendedStates, - [out, retval] long *nLocalizedExtendedStates - ); - - /** @brief Returns the unique ID. - - The uniqueID is an identifier for this object, is unique within the - current window, and remains the same for the lifetime of the accessible - object. - - The uniqueID is not related to: - - the MSAA objectID which is used by the server to disambiguate between - IAccessibles per HWND or - - the MSAA childID which is used to disambiguate between children being - managed by an IAccessible. - - This value is provided so the AT can have access to a unique runtime persistent - identifier even when not handling an event for the object. - - An example of when this value is useful is if the AT wants to build a cache. - The AT could cache the uniqueIDs in addition to other data being cached. - When an event is fired the AT could map the uniqueID to its internal model. - Thus, if there's a REORDER/SHOW/HIDE event the AT knows which part of the - internal structure has been invalidated and can refetch just that part. - - This value can also be used by an AT to determine when the current control - has changed. If the role is the same for two controls that are adjacent in - the tab order, this can be used to detect the new control. - - Another use of this value by an AT is to identify when a grouping object has - changed, e.g. when moving from a radio button in one group to a radio button in a - different group. - - One means of implementing this would be to create a factory with a 32 bit number - generator and a reuse pool. The number generator would emit numbers starting - at 1. Each time an object's life cycle ended, its number would be saved into a - reuse pool. The number generator would be used whenever the reuse pool was empty. - - Another way to create a unique ID is to generate it from a pointer value, e.g. an - object's address. That would be unique because no two active objects can use the - same allocated memory space. - - @param [out] uniqueID - @retval S_OK - */ - [propget] HRESULT uniqueID - ( - [out, retval] long *uniqueID - ); - - /** @brief Returns the window handle for the parent window which contains this object. - - This is the same window handle which will be passed for any events that occur on the - object, but is cached in the accessible object for use when it would be helpful to - access the window handle in cases where an event isn't fired on this object. - - A use case is when a screen reader is grabbing an entire web page on a page load. - Without the availability of windowHandle, the AT would have to get the window handle - by using WindowFromAccessibleObject on each IAccessible, which is slow because it's - implemented by oleacc.dll as a loop which crawls up the ancestor chain and looks for - a ROLE_WINDOW object, mapping that back to a window handle. - - @param [out] windowHandle - @retval S_OK - */ - [propget] HRESULT windowHandle - ( - [out, retval] HWND *windowHandle - ); - - /** @brief Returns the index of this object in its parent object. - @param [out] indexInParent - 0 based; -1 indicates there is no parent; the upper bound is the value - returned by the parent's IAccessible::get_accChildCount. - @retval S_OK - @retval S_FALSE if no parent, [out] value is -1 - */ - [propget] HRESULT indexInParent - ( - [out, retval] long *indexInParent - ); - - /** @brief Returns the IA2Locale of the accessible object. - @param [out] locale - @retval S_OK - */ - [propget] HRESULT locale - ( - [out, retval] IA2Locale *locale - ); - - /** @brief Returns the attributes specific to this %IAccessible2 object, such as a cell's formula. - @param [out] attributes - @retval S_OK - @retval S_FALSE returned if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT attributes - ( - [out, retval] BSTR *attributes - ); - -} - diff --git a/src/3rdparty/iaccessible2/idl/AccessibleAction.idl b/src/3rdparty/iaccessible2/idl/AccessibleAction.idl deleted file mode 100644 index edab0d288b..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleAction.idl +++ /dev/null @@ -1,194 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleAction.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; - -/** @brief This interface gives access to actions that can be executed - for accessible objects. - - Every accessible object that can be manipulated via the native GUI beyond the - methods available either in the MSAA IAccessible interface or in the set of - IAccessible2 interfaces (other than this IAccessibleAction interface) should - support the IAccessibleAction interface in order to provide Assistive Technology - access to all the actions that can be performed by the object. Each action can - be performed or queried for a name, description or associated key bindings. - Actions are needed more for ATs that assist the mobility impaired, such as - on-screen keyboards and voice command software. By providing actions directly, - the AT can present them to the user without the user having to perform the extra - steps to navigate a context menu. - - The first action should be equivalent to the MSAA default action. If there is - only one action, %IAccessibleAction should also be implemented. -*/ -[object, uuid(B70D9F59-3B5A-4dba-AB9E-22012F607DF5)] -interface IAccessibleAction : IUnknown -{ - - /** @brief Returns the number of accessible actions available in this object. - - If there are more than one, the first one is considered the - "default" action of the object. - @param [out] nActions - The returned value of the number of actions is zero if there are - no actions. - @retval S_OK - @note This method is missing a [propget] prefix in the IDL. The result is the - method is named nActions in generated C++ code instead of get_nActions. - */ - HRESULT nActions - ( - [out,retval] long* nActions - ); - - /** @brief Performs the specified Action on the object. - @param [in] actionIndex - 0 based index specifying the action to perform. If it lies outside - the valid range no action is performed. - @retval S_OK - @retval S_FALSE if action could not be performed - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT doAction - ( - [in] long actionIndex - ); - - /** @brief Returns a description of the specified action of the object. - @param [in] actionIndex - 0 based index specifying which action's description to return. - If it lies outside the valid range an empty string is returned. - @param [out] description - The returned value is a localized string of the specified action. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT description - ( - [in] long actionIndex, - [out, retval] BSTR *description - ); - - /** @brief Returns an array of BSTRs describing one or more key bindings, if - there are any, associated with the specified action. - - The returned strings are the localized human readable key sequences to be - used to activate each action, e.g. "Ctrl+Shift+D". Since these key - sequences are to be used when the object has focus, they are like - mnemonics (access keys), and not like shortcut (accelerator) keys. - - There is no need to implement this method for single action controls since - that would be redundant with the standard MSAA programming practice of - getting the mnemonic from get_accKeyboardShortcut. - - An AT such as an On Screen Keyboard might not expose these bindings but - provide alternative means of activation. - - Note: the client allocates and passes in an array of pointers. The server - allocates the BSTRs and passes back one or more pointers to these BSTRs into - the array of pointers allocated by the client. The client is responsible - for deallocating the BSTRs. - - @param [in] actionIndex - 0 based index specifying which action's key bindings should be returned. - @param [in] nMaxBindings - This parameter is ignored. Refer to @ref _arrayConsideration - "Special Consideration when using Arrays" for more details. - @param [out] keyBindings - An array of BSTRs, allocated by the server, one for each key binding. - Free it with CoTaskMemFree. - @param [out] nBindings - The number of key bindings returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are no key bindings, [out] values are NULL and 0 respectively - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT keyBinding - ( - [in] long actionIndex, - [in] long nMaxBindings, - [out, size_is(,nMaxBindings), length_is(,*nBindings)] BSTR **keyBindings, - [out, retval] long *nBindings - ); - - /** @brief Returns the non-localized name of specified action. - @param [in] actionIndex - 0 based index specifying which action's non-localized name should be returned. - @param [out] name - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT name - ( - [in] long actionIndex, - [out, retval] BSTR *name - ); - - /** @brief Returns the localized name of specified action. - @param [in] actionIndex - 0 based index specifying which action's localized name should be returned. - @param [out] localizedName - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT localizedName - ( - [in] long actionIndex, - [out, retval] BSTR *localizedName - ); - -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleApplication.idl b/src/3rdparty/iaccessible2/idl/AccessibleApplication.idl deleted file mode 100644 index ed15aa0018..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleApplication.idl +++ /dev/null @@ -1,121 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleApplication.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; - -/** @brief This interface gives access to the application's name and version information. - - This interface provides the AT with the information it needs to differentiate - this application from other applications, from other versions of this - application, or from other versions of this application running on different - versions of an accessibility bridge or accessibility toolkit. - - Servers implementing IAccessible2 should provide access to the %IAccessibleApplication - interface via QueryService from any object so that ATs can easily determine specific - information about the application such as its name or version. -*/ -[object, uuid(D49DED83-5B25-43F4-9B95-93B44595979E)] -interface IAccessibleApplication : IUnknown -{ - - /** @brief Returns the application name. - @param [out] name - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT appName - ( - [out, retval] BSTR *name - ); - - /** @brief Returns the application version. - @param [out] version - The version string must not contain levels when it is know beforehand that - this information will never require a change in a client's behavior. - For example, use "3.6.0" rather than "3.6.0.v201005131500". - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT appVersion - ( - [out, retval] BSTR *version - ); - - /** @brief Returns the toolkit/bridge name. - @param [out] name - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT toolkitName - ( - [out, retval] BSTR *name - ); - - /** @brief Returns the toolkit/bridge version. - @param [out] version - The version string must not contain levels when it is know beforehand that - this information will never require a change in a client's behavior. - For example, use "3.6.0" rather than "3.6.0.v201005131500". - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT toolkitVersion - ( - [out, retval] BSTR *version - ); - -} - diff --git a/src/3rdparty/iaccessible2/idl/AccessibleComponent.idl b/src/3rdparty/iaccessible2/idl/AccessibleComponent.idl deleted file mode 100644 index bea623a938..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleComponent.idl +++ /dev/null @@ -1,124 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleComponent.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; - -/** A value specifying a color in ARGB format, where each 8 bit color component -specifies alpha, red, green, and blue respectively. The alpha value is optional. -*/ -typedef long IA2Color; - -/** @brief This interface is implemented by any object that can be rendered - on the screen. - - This interface provides the standard mechanism for an assistive technology - to retrieve information concerning the graphical representation of an object. - Coordinates used by the functions of this interface are specified in - different coordinate systems. Their scale is the same and is equal to - that of the screen coordinate system. In other words all coordinates - are measured in pixels. They differ in their respective origin: - <ul> - <li>The screen coordinate system has its origin in the upper left - corner of the current screen.</li> - <li>The origin of the parent coordinate system is the upper left corner - of the parent's bounding box. With no parent the screen coordinate - system is used instead.</li> - </ul> -*/ -[object, uuid(1546D4B0-4C98-4bda-89AE-9A64748BDDE4)] -interface IAccessibleComponent : IUnknown -{ - - /** @brief Returns the location of the upper left corner of the object's - bounding box relative to the immediate parent object. - - The coordinates of the bounding box are given relative to the parent's - coordinate system. The coordinates of the returned position are relative - to this object's parent or relative to the screen on which this object - is rendered if it has no parent. If the object is not on any screen - the returned position is (0,0). - - @param [out] x - @param [out] y - @retval S_OK - */ - [propget] HRESULT locationInParent - ( - [out] long *x, - [out, retval] long *y - ); - - /** @brief Returns the foreground color of this object. - @param [out] foreground - The returned color is the foreground color of this object or, if - that is not supported, the default foreground color. - @retval S_OK - */ - [propget] HRESULT foreground - ( - [out, retval] IA2Color *foreground - ); - - /** @brief Returns the background color of this object. - @param [out] background - The returned color is the background color of this object or, if - that is not supported, the default background color. - @retval S_OK - */ - [propget] HRESULT background - ( - [out, retval] IA2Color *background - ); -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleEditableText.idl b/src/3rdparty/iaccessible2/idl/AccessibleEditableText.idl deleted file mode 100644 index 48fefd30ef..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleEditableText.idl +++ /dev/null @@ -1,259 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleEditableText.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "IA2CommonTypes.idl"; - -/** @brief This interface provides clipboard capability to text objects. - - This interface is typically used in conjunction with the IAccessibleText - interface and complements that interface with the additional capability of - clipboard operations. Note that even a read only text object can support - the copy capability so this interface is not limited to editable objects. - - The substrings used with this interface are specified as follows: - If startOffset is less than endOffset, the substring starts with the - character at startOffset and ends with the character just before endOffset. - If endOffset is lower than startOffset, the result is the same as a call - with the two arguments exchanged. The whole text can be defined by passing - the indices zero and IAccessibleText::nCharacters. If both indices have the - same value, an empty string is defined. - - Refer to the @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about a special offset constant that can be used in %IAccessibleEditableText methods. -*/ -[object, uuid(A59AA09A-7011-4b65-939D-32B1FB5547E3)] -interface IAccessibleEditableText : IUnknown -{ - - /** @brief Copies the text range into the clipboard. - - The selection is set to the specified offsets and then selection is copied into - the system clipboard. - - @param [in] startOffset - Start index of the text to moved into the clipboard. - The valid range is 0..length. - @param [in] endOffset - End index of the text to moved into the clipboard. - The valid range is 0..length. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleEditableText - methods. - */ - HRESULT copyText - ( - [in] long startOffset, - [in] long endOffset - ); - - /** @brief Deletes a range of text. - - The text between and including the two given indices is deleted - from the text represented by this object. - - @param [in] startOffset - Start index of the text to be deleted. - The valid range is 0..length. - @param [in] endOffset - End index of the text to be deleted. - The valid range is 0..length. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleEditableText - methods. - */ - HRESULT deleteText - ( - [in] long startOffset, - [in] long endOffset - ); - - /** @brief Inserts text at the specified position. - - The specified string is inserted at the given index into the text - represented by this object. - - @param [in] offset - Index at which to insert the text. - The valid range is 0..length. - Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleEditableText - methods. - @param [in] text - Text that is inserted. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT insertText - ( - [in] long offset, - [in] BSTR *text - ); - - /** @brief Deletes a range of text and copies it to the clipboard. - - The selection is set to the specified offsets, the selection is then copied into - the system clipboard, and then the selection is deleted. - - @param [in] startOffset - Start index of the text to be deleted. - The valid range is 0..length. - @param [in] endOffset - End index of the text to be deleted. - The valid range is 0..length. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleEditableText - methods. - */ - HRESULT cutText - ( - [in] long startOffset, - [in] long endOffset - ); - - /** @brief Pastes content from the clipboard. - - Any existing selection is removed, the clipboard content is then pasted into - this object's text at the given offset. This method is similar to the insertText - method. If the index is not valid the system clipboard content is not inserted. The - behavior is the same as when Ctrl+V is used, i.e. the pasted contents are not - necessarily plain text. - - @param [in] offset - Index at which to insert the content from the system clipboard into - the text represented by this object. - The valid range is 0..length. - Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleEditableText - methods. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT pasteText - ( - [in] long offset - ); - - /** @brief Replaces text. - - The text between the two given indices is replaced by the specified - replacement string. This method is equivalent to calling first - IAccessibleEditableText::deleteText with the two indices and then - calling IAccessibleEditableText::insertText with the replacement text - at the start index. - - @param [in] startOffset - Start index of the text to be replaced. - The valid range is 0..length. - @param [in] endOffset - End index of the text to be replaced. - The valid range is 0..length. - @param [in] text - The Text that replaces the text between the given indices. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleEditableText - methods. - */ - HRESULT replaceText - ( - [in] long startOffset, - [in] long endOffset, - [in] BSTR *text - ); - - /** @brief Replaces the attributes of a text range by the given set of attributes. - - Sets the attributes for the text between the two given indices. The old - attributes are replaced by the new list of attributes. - - @param [in] startOffset - Start index of the text whose attributes are modified. - The valid range is 0..length. - @param [in] endOffset - End index of the text whose attributes are modified. - The valid range is 0..length. - @param [in] attributes - Set of attributes that replaces the old list of attributes of - the specified text portion. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleEditableText - methods. - */ - HRESULT setAttributes - ( - [in] long startOffset, - [in] long endOffset, - [in] BSTR *attributes - ); -} - diff --git a/src/3rdparty/iaccessible2/idl/AccessibleEventID.idl b/src/3rdparty/iaccessible2/idl/AccessibleEventID.idl deleted file mode 100644 index 1db957d6e5..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleEventID.idl +++ /dev/null @@ -1,230 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleEventID.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -/** %IAccessible2 specific event constants - - This enum defines the event IDs fired by %IAccessible2 objects. The event IDs - are in addition to those used by MSAA. -*/ -enum IA2EventID { - - /** The change of the number or attributes of actions of an accessible - object is signaled by events of this type. - */ - IA2_EVENT_ACTION_CHANGED = 0x101, - - /** <b>Deprecated.</b> The active descendant of a component has changed. - - Note: This event constant is misspelled and thus is deprecated and will be - removed in a later version. Please use the correctly spelled version which - follows. - */ - IA2_EVENT_ACTIVE_DECENDENT_CHANGED, - - /** The active descendant of a component has changed. The active descendant - is used in objects with transient children. - - Note: Due to the fact that MSAA's WinEvents don't allow the active child index - to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event the manages - descendants scheme can't be used. Instead the active child object has to fire - MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be - added to provide for event specific data to be passed with the event. At that - time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and - IA2_STATE_MANAGES_DESCENDANTS state would be useful. - */ - IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED, - - /** The document wide attributes of the document object have changed. - */ - IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED, - - /** The contents of the document have changed. - */ - IA2_EVENT_DOCUMENT_CONTENT_CHANGED, - - /** The loading of the document has completed. - */ - IA2_EVENT_DOCUMENT_LOAD_COMPLETE, - - /** The loading of the document was interrupted. - */ - IA2_EVENT_DOCUMENT_LOAD_STOPPED, - - /** The document contents are being reloaded. - */ - IA2_EVENT_DOCUMENT_RELOAD, - - /** The ending index of this link within the containing string has changed. - */ - IA2_EVENT_HYPERLINK_END_INDEX_CHANGED, - - /** The number of anchors associated with this hyperlink object has changed. - */ - IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED, - - /** The hyperlink selected state changed from selected to unselected or - from unselected to selected. - */ - IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED, - - /** One of the links associated with the hypertext object has been activated. - */ - IA2_EVENT_HYPERTEXT_LINK_ACTIVATED, - - /** One of the links associated with the hypertext object has been selected. - */ - IA2_EVENT_HYPERTEXT_LINK_SELECTED, - - /** The starting index of this link within the containing string has changed. - */ - IA2_EVENT_HYPERLINK_START_INDEX_CHANGED, - - /** Focus has changed from one hypertext object to another, or focus moved - from a non-hypertext object to a hypertext object, or focus moved from a - hypertext object to a non-hypertext object. - */ - IA2_EVENT_HYPERTEXT_CHANGED, - - /** The number of hyperlinks associated with a hypertext object changed - */ - IA2_EVENT_HYPERTEXT_NLINKS_CHANGED, - - /** An object's attributes changed. - Also see ::IA2_EVENT_TEXT_ATTRIBUTE_CHANGED. - */ - IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED, - - /** A slide changed in a presentation document or a page boundary was - crossed in a word processing document. - */ - IA2_EVENT_PAGE_CHANGED, - - /** The caret moved from one section to the next. - */ - IA2_EVENT_SECTION_CHANGED, - - /** A table caption changed. - */ - IA2_EVENT_TABLE_CAPTION_CHANGED, - - /** A table's column description changed. - */ - IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED, - - /** A table's column header changed. - */ - IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED, - - /** A table's data changed. - */ - IA2_EVENT_TABLE_MODEL_CHANGED, - - /** A table's row description changed. - */ - IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED, - - /** A table's row header changed. - */ - IA2_EVENT_TABLE_ROW_HEADER_CHANGED, - - /** A table's summary changed. - */ - IA2_EVENT_TABLE_SUMMARY_CHANGED, - - /** A text object's attributes changed. - Also see ::IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED. - */ - IA2_EVENT_TEXT_ATTRIBUTE_CHANGED, - - /** The caret has moved to a new position. - */ - IA2_EVENT_TEXT_CARET_MOVED, - - /** <b>Deprecated.</b> This event is equivalent to ::IA2_EVENT_TEXT_UPDATED. - */ - IA2_EVENT_TEXT_CHANGED, - - /** The caret moved from one column to the next. - */ - IA2_EVENT_TEXT_COLUMN_CHANGED, - - /** Text was inserted. - */ - IA2_EVENT_TEXT_INSERTED, - - /** Text was removed. - */ - IA2_EVENT_TEXT_REMOVED, - - /** This event indicates general text changes, i.e. changes to text that are - exposed through the IAccessibleText interface. For compatibility with ATK/AT-SPI - which does not have an equivalent event, servers can alternatively fire - ::IA2_EVENT_TEXT_REMOVED and ::IA2_EVENT_TEXT_INSERTED. - */ - IA2_EVENT_TEXT_UPDATED, - - /** The text selection changed. Later versions of Microsoft development environments - have an equivalent event identified, EVENT_OBJECT_TEXTSELECTIONCHANGED. Servers - should use that if it is available and use IA2_EVENT_TEXT_SELECTION_CHANGED otherwise. - Clients should be prepared to respond to either event. - - */ - IA2_EVENT_TEXT_SELECTION_CHANGED, - - /** A visible data event indicates the change of the visual appearance - of an accessible object. This includes for example most of the - attributes available via the IAccessibleComponent interface. - */ - IA2_EVENT_VISIBLE_DATA_CHANGED - -}; diff --git a/src/3rdparty/iaccessible2/idl/AccessibleHyperlink.idl b/src/3rdparty/iaccessible2/idl/AccessibleHyperlink.idl deleted file mode 100644 index 9311176d9c..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleHyperlink.idl +++ /dev/null @@ -1,187 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleHyperlink.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "AccessibleAction.idl"; - -/** @brief This interface represents hyperlinks. - - This interface represents a hyperlink associated with a single substring - of text or single non-text object. Non-text objects can have either a - single link or a collection of links such as when the non-text object is - an image map. - - Linked objects and anchors are implementation dependent. This interface is derived - from IAccessibleAction. IAccessibleAction::nActions is one greater than the - maximum value for the indices used with the methods of this interface. - - Furthermore, the object that implements this interface has to be connected - implicitly or explicitly with an object that implements IAccessibleText. - IAccessibleHyperlink::startIndex and IAccessibleHyperlink::endIndex are - indices with respect to the text exposed by IAccessibleText. - - This interface provides access to a single object which can have multiple actions. - An example is an image map which is an image with multiple links each of which is - associated with a separate non-overlapping area of the image. This interface could - also be applied to other kinds of objects with multiple actions such as "smart tags" - which are objects, typically strings, which have multiple actions such as - "Activate URI", "Bookmark URI", etc. - - An interesting use case is an image map where each area is associated with multiple - actions, e.g. an image map of smart tags. In this case you would have to implement - two levels of accessible hyperlinks. The first level hyperlinks would only implement - anchor and anchorTarget. The anchors would all reference the image object. The - anchorTargets would reference the second level accessible hyperlink objects. None - of the IAccessibleAction methods would be implemented on the first level hyperlink - objects. The second level hyperlink objects would implement the IAccessibleAction - methods. Their anchors would also reference the image object and their anchorTargets - would reference URLs or the objects that would be activated. - - This use case demonstrates that in some cases there is no need for IAccessibleHyperlink - to derive from IAccessibleAction. As a result it may be removed in a later version of - the IDL and it is suggested that implementations should not rely on the inheritance. - -*/ -[object, uuid(01C20F2B-3DD2-400f-949F-AD00BDAB1D41)] -interface IAccessibleHyperlink : IAccessibleAction -{ - - /** @brief Returns an object that represents the link anchor, as appropriate - for the link at the specified index. - @param [in] index - A 0 based index identifies the anchor when, as in the case of an image map, - there is more than one link represented by this object. The valid maximal - index is indicated by IAccessibleAction::nActions. - @param [out] anchor - This is an implementation dependent value. For example, for a text link this - method could return the substring of the containing string where the substring - is overridden with link behavior, and for an image link this method could return - an IUnknown VARIANT for IAccessibleImage. See the section about - @ref _variants "VARIANTs" for additional information. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT anchor - ( - [in] long index, - [out, retval] VARIANT *anchor - ); - - /** @brief Returns an object representing the target of the link, as appropriate - for the link at the specified index. - @param [in] index - A 0 based index identifies the anchor when, as in the case of an image map, - there is more than one link represented by this object. The valid maximal - index is indicated by IAccessibleAction::nActions. - @param [out] anchorTarget - This is an implementation dependent value. For example this method could - return a BSTR VARIANT of the URI. Alternatively this method could return an - IUnknown VARIANT of a COM interface representing a target object to be - activated when the link is activated. See the section about - @ref _variants "VARIANTs" for additional information. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT anchorTarget - ( - [in] long index, - [out, retval] VARIANT *anchorTarget - ); - - /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink starts. - - The returned value is related to the IAccessibleText interface of the object that - owns this hyperlink. - @param [out] index - @retval S_OK - */ - [propget] HRESULT startIndex - ( - [out, retval] long *index - ); - - /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink ends. - - The returned value is related to the IAccessibleText interface of the object that - owns this hyperlink. The character at the index is not part of the hypertext. - @param [out] index - @retval S_OK - */ - [propget] HRESULT endIndex - ( - [out, retval] long *index - ); - - /** @brief Returns whether the target object referenced by this link is still valid. - - This is a volatile state that may change without sending an appropriate event. - Returns TRUE if the referenced target is still valid and FALSE otherwise. - - This has also been used to indicate whether or not the URI of the anchorTarget - is malformed. - - @param [out] valid - If false, one or more of the object's links are invalid. - If true, all of the object's links are valid. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is FALSE - @note This method is not being used, is deprecated, and should not be implemented or - used. It is likely that this method will be removed in a later version of the IDL. - */ - [propget] HRESULT valid - ( - [out, retval] boolean *valid - ); -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleHypertext.idl b/src/3rdparty/iaccessible2/idl/AccessibleHypertext.idl deleted file mode 100644 index 13093bf610..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleHypertext.idl +++ /dev/null @@ -1,123 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleHypertext.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "AccessibleText.idl"; -import "AccessibleHyperlink.idl"; - -/** @brief This interface exposes information about hypertext in a document. - - The %IAccessibleHypertext interface is the main interface to expose - hyperlinks in a document, typically a text document, that are used - to reference other documents. A typical implementation is to implement - this interface on the smallest text object such as a paragraph of text. -*/ -[object, uuid(6B4F8BBF-F1F2-418a-B35E-A195BC4103B9)] -interface IAccessibleHypertext : IAccessibleText -{ - - /** @brief Returns the number of links and link groups contained within this hypertext - paragraph. - @param [out] hyperlinkCount - The number of links and link groups within this hypertext paragraph. - Returns 0 if there is no link. - @retval S_OK - */ - [propget] HRESULT nHyperlinks - ( - [out, retval] long *hyperlinkCount - ); - - /** @brief Returns the specified link. - - The returned IAccessibleHyperlink object encapsulates the hyperlink and - provides several kinds of information describing it. - @param [in] index - This 0 based index specifies the hyperlink to return. - @param [out] hyperlink - If the given index is valid, i.e. lies in the interval from 0 to the number - of links minus one, a reference to the specified hyperlink object is returned. - If the index is invalid then a NULL pointer is returned. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT hyperlink - ( - [in] long index, - [out, retval] IAccessibleHyperlink **hyperlink - ); - - /** @brief Returns the index of the hyperlink that is associated with this character index. - - This is the case when a link spans the given character index. - @param [in] charIndex - A 0 based index of the character for which to return the link index. If - IAccessibleText is used to represent the text containing the link, then the - character index is only valid if it is greater than or equal to zero and - lower than the number of characters in the text. - @param [out] hyperlinkIndex - Returns the 0 based index of the hyperlink that is associated with this - character index, or -1 if charIndex is not on a link. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is -1 - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT hyperlinkIndex - ( - [in] long charIndex, - [out, retval] long *hyperlinkIndex - ); - -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleImage.idl b/src/3rdparty/iaccessible2/idl/AccessibleImage.idl deleted file mode 100644 index e347614e29..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleImage.idl +++ /dev/null @@ -1,111 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleImage.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "IA2CommonTypes.idl"; - -/** @brief This interface represents images and icons. - - This interface is used for a representation of images like icons on buttons. - %IAccessibleImage only needs to be implemented in certain situations. Some - examples are: - <ol> - <li>The accessible name and description are not enough to fully - describe the image, e.g. when the accessible description is used to define the - behavior of an actionable image and the image itself conveys semantically - significant information. - <li>The user can edit the content that includes an - image and therefore the user needs to be able to review the image's position. - </ol> -*/ -[object, uuid(FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE)] -interface IAccessibleImage : IUnknown -{ - /** @brief Returns the localized description of the image. - @param [out] description - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT description - ( - [out, retval] BSTR *description - ); - - /** @brief Returns the coordinates of the image. - @param [in] coordinateType - Specifies whether the returned coordinates should be relative to the screen or the parent object. - @param [out] x - @param [out] y - @retval S_OK - */ - [propget] HRESULT imagePosition - ( - [in] enum IA2CoordinateType coordinateType, - [out] long *x, - [out, retval] long *y - ); - - /** @brief Returns the size of the image in units specified by parent's coordinate system. - @param [out] height - @param [out] width - @retval S_OK - */ - - [propget] HRESULT imageSize - ( - [out] long *height, - [out, retval] long *width - ); -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleRelation.idl b/src/3rdparty/iaccessible2/idl/AccessibleRelation.idl deleted file mode 100644 index b0c6dfcc97..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleRelation.idl +++ /dev/null @@ -1,197 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleRelation.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; - -/** @defgroup grpRelations Relations - Use the following constants to compare against the BSTRs returned by - IAccessibleRelation::relationType. -*/ -///@{ - -/** Some attribute of this object is affected by a target object. */ -const WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy"; - -/** This object is interactive and controls some attribute of a target object. */ -const WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor"; - -/** This object is described by the target object. */ -const WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy"; - -/** This object is describes the target object. */ -const WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor"; - -/** This object is embedded by a target object. */ -const WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy"; - -/** This object embeds a target object. This relation can be used on the - OBJID_CLIENT accessible for a top level window to show where the content - areas are. -*/ -const WCHAR *const IA2_RELATION_EMBEDS = L"embeds"; - -/** Content flows to this object from a target object. - This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text - objects together in order to allow assistive technology to follow the - intended reading order. -*/ -const WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom"; - -/** Content flows from this object to a target object. */ -const WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo"; - -/** This object is label for a target object. */ -const WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor"; - -/** This object is labelled by a target object. Note that the double L spelling - which follows is preferred. Please use it instead. This single L version may - be removed in a later version. -*/ -const WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy"; - -/** This object is labelled by a target object. */ -const WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy"; - -/** This object is a member of a group of one or more objects. When - there is more than one object in the group each member may have one and the - same target, e.g. a grouping object. It is also possible that each member has - multiple additional targets, e.g. one for every other member in the group. -*/ -const WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf"; - -/** This object is a child of a target object. */ -const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf"; - -/** This object is a parent window of the target object. */ -const WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf"; - -/** This object is a transient component related to the target object. - When this object is activated the target object doesn't lose focus. -*/ -const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor"; - -/** This object is a sub window of a target object. */ -const WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf"; - -///@} - -/// This interface gives access to an object's set of relations. -[object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)] -interface IAccessibleRelation : IUnknown -{ - /** @brief Returns the type of the relation. - @param [out] relationType - The strings returned are defined @ref grpRelations "in this section of the documentation". - @retval S_OK - */ - [propget] HRESULT relationType - ( - [out, retval] BSTR *relationType - ); - - /** @brief Returns a localized version of the relation type. - @param [out] localizedRelationType - @retval S_OK - */ - [propget] HRESULT localizedRelationType - ( - [out, retval] BSTR *localizedRelationType - ); - - /** @brief Returns the number of targets for this relation. - @param [out] nTargets - @retval S_OK - */ - [propget] HRESULT nTargets - ( - [out, retval] long *nTargets - ); - - /** @brief Returns one accessible relation target. - @param [in] targetIndex - 0 based index - @param [out] target - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Use QueryInterface to get IAccessible2. - */ - [propget] HRESULT target - ( - [in] long targetIndex, - [out, retval] IUnknown **target - ); - - /** @brief Returns multiple accessible relation targets - @param [in] maxTargets - maximum size of the array allocated by the client - @param [out] targets - The array of target objects. Note that this array is to be allocated by the - client and freed when no longer needed. Refer to @ref _arrayConsideration - "Special Consideration when using Arrays" for more details. You will need to use - QueryInterface on the IUnknown to get the IAccessible2. - @param [out] nTargets - actual number of targets in the returned array (not more than maxTargets) - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, e.g. a negative value - */ - [propget] HRESULT targets - ( - [in] long maxTargets, - [out, size_is(maxTargets), length_is(*nTargets)] - IUnknown **targets, - [out, retval] long *nTargets - ); - -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleRole.idl b/src/3rdparty/iaccessible2/idl/AccessibleRole.idl deleted file mode 100644 index 385e02d05a..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleRole.idl +++ /dev/null @@ -1,293 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleRole.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; - -/** Collection of roles - - This enumerator defines an extended set of accessible roles of objects implementing - the %IAccessible2 interface. These roles are in addition to the MSAA roles obtained - through the MSAA get_accRole method. Examples are 'footnote', 'heading', and - 'label'. You obtain an object's %IAccessible2 roles by calling IAccessible2::role. -*/ -enum IA2Role { - - /** Unknown role. The object contains some Accessible information, but its - role is not known. - */ - IA2_ROLE_UNKNOWN = 0, - - /** An object that can be drawn into and to manage events from the objects - drawn into it. Also refer to ::IA2_ROLE_FRAME, - ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE. - */ - IA2_ROLE_CANVAS = 0x401, - - /// A caption describing another object. - IA2_ROLE_CAPTION, - - /// Used for check buttons that are menu items. - IA2_ROLE_CHECK_MENU_ITEM, - - /// A specialized dialog that lets the user choose a color. - IA2_ROLE_COLOR_CHOOSER, - - /// A date editor. - IA2_ROLE_DATE_EDITOR, - - /** An iconified internal frame in an ::IA2_ROLE_DESKTOP_PANE. - Also refer to ::IA2_ROLE_INTERNAL_FRAME. - */ - IA2_ROLE_DESKTOP_ICON, - - /** A desktop pane. A pane that supports internal frames and iconified - versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME. - */ - IA2_ROLE_DESKTOP_PANE, - - /** A directory pane. A pane that allows the user to navigate through - and select the contents of a directory. May be used by a file chooser. - Also refer to ::IA2_ROLE_FILE_CHOOSER. - */ - IA2_ROLE_DIRECTORY_PANE, - - /** An editable text object in a toolbar. <b>Deprecated.</b> - The edit bar role was meant for a text area in a tool bar. However, to detect - a text area in a tool bar the AT can query the parent. - */ - IA2_ROLE_EDITBAR, - - /// Embedded (OLE) object. - IA2_ROLE_EMBEDDED_OBJECT, - - /// Text that is used as an endnote (footnote at the end of a chapter or section). - IA2_ROLE_ENDNOTE, - - /** A file chooser. A specialized dialog that displays the files in the - directory and lets the user select a file, browse a different directory, - or specify a filename. May use the directory pane to show the contents of - a directory. - Also refer to ::IA2_ROLE_DIRECTORY_PANE. - */ - IA2_ROLE_FILE_CHOOSER, - - /** A font chooser. A font chooser is a component that lets the user pick - various attributes for fonts. - */ - IA2_ROLE_FONT_CHOOSER, - - /** Footer of a document page. - Also refer to ::IA2_ROLE_HEADER. - */ - IA2_ROLE_FOOTER, - - /// Text that is used as a footnote. Also refer to ::IA2_ROLE_ENDNOTE. - IA2_ROLE_FOOTNOTE, - - /** A container of form controls. An example of the use of this role is to - represent an HTML FORM tag. - */ - IA2_ROLE_FORM, - - /** Frame role. A top level window with a title bar, border, menu bar, etc. - It is often used as the primary window for an application. Also refer to - ::IA2_ROLE_CANVAS and the MSAA roles of dialog and window. - */ - IA2_ROLE_FRAME, - - /** A glass pane. A pane that is guaranteed to be painted on top of all panes - beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and - ::IA2_ROLE_ROOT_PANE. - */ - IA2_ROLE_GLASS_PANE, - - /** Header of a document page. - Also refer to ::IA2_ROLE_FOOTER. - */ - IA2_ROLE_HEADER, - - /// Heading. Use the IAccessible2::attributes level attribute to determine the heading level. - IA2_ROLE_HEADING, - - /// A small fixed size picture, typically used to decorate components. - IA2_ROLE_ICON, - - /** An image map object. Usually a graphic with multiple hotspots, where - each hotspot can be activated resulting in the loading of another document - or section of a document. - */ - IA2_ROLE_IMAGE_MAP, - - /** An object which is used to allow input of characters not found on a keyboard, - such as the input of Chinese characters on a Western keyboard. - */ - IA2_ROLE_INPUT_METHOD_WINDOW, - - /** An internal frame. A frame-like object that is clipped by a desktop pane. - The desktop pane, internal frame, and desktop icon objects are often used to - create multiple document interfaces within an application. - Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME. - */ - IA2_ROLE_INTERNAL_FRAME, - - /// An object used to present an icon or short string in an interface. - IA2_ROLE_LABEL, - - /** A layered pane. A specialized pane that allows its children to be drawn - in layers, providing a form of stacking order. This is usually the pane that - holds the menu bar as well as the pane that contains most of the visual - components in a window. - Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE. - */ - IA2_ROLE_LAYERED_PANE, - - /// An embedded note which is not visible until activated. - IA2_ROLE_NOTE, - - /** A specialized pane whose primary use is inside a dialog. - Also refer to MSAA's dialog role. - */ - IA2_ROLE_OPTION_PANE, - - /** An object representing a page of document content. It is used in documents - which are accessed by the user on a page by page basis. - */ - IA2_ROLE_PAGE, - - /// A paragraph of text. - IA2_ROLE_PARAGRAPH, - - /** A radio button that is a menu item. - Also refer to MSAA's button and menu item roles. - */ - IA2_ROLE_RADIO_MENU_ITEM, - - /** An object which is redundant with another object in the accessible hierarchy. - ATs typically ignore objects with this role. - */ - IA2_ROLE_REDUNDANT_OBJECT, - - /** A root pane. A specialized pane that has a glass pane and a layered pane - as its children. - Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_LAYERED_PANE - */ - IA2_ROLE_ROOT_PANE, - - /** A ruler such as those used in word processors. - */ - IA2_ROLE_RULER, - - /** A scroll pane. An object that allows a user to incrementally view a large - amount of information. Its children can include scroll bars and a viewport. - Also refer to ::IA2_ROLE_VIEW_PORT and MSAA's scroll bar role. - */ - IA2_ROLE_SCROLL_PANE, - - /** A container of document content. An example of the use of this role is to - represent an HTML DIV tag. A section may be used as a region. A region is a - group of elements that together form a perceivable unit. A region does not - necessarily follow the logical structure of the content, but follows the - perceivable structure of the page. A region may have an attribute in the set - of IAccessible2::attributes which indicates that it is "live". A live region - is content that is likely to change in response to a timed change, a user - event, or some other programmed logic or event. - */ - IA2_ROLE_SECTION, - - /// Object with graphical representation used to represent content on draw pages. - IA2_ROLE_SHAPE, - - /** A split pane. A specialized panel that presents two other panels at the - same time. Between the two panels is a divider the user can manipulate to make - one panel larger and the other panel smaller. - */ - IA2_ROLE_SPLIT_PANE, - - /** An object that forms part of a menu system but which can be "undocked" - from or "torn off" the menu system to exist as a separate window. - */ - IA2_ROLE_TEAR_OFF_MENU, - - /// An object used as a terminal emulator. - IA2_ROLE_TERMINAL, - - /// Collection of objects that constitute a logical text entity. - IA2_ROLE_TEXT_FRAME, - - /** A toggle button. A specialized push button that can be checked or unchecked, - but does not provide a separate indicator for the current state. - Also refer to MSAA's roles of push button, check box, and radio button. - <BR><B>Note:</B> IA2_ROLE_TOGGLE_BUTTON should not be used. Instead, use MSAA's - ROLE_SYSTEM_PUSHBUTTON and STATE_SYSTEM_PRESSED. - */ - IA2_ROLE_TOGGLE_BUTTON, - - /** A viewport. An object usually used in a scroll pane. It represents the - portion of the entire data that the user can see. As the user manipulates - the scroll bars, the contents of the viewport can change. - Also refer to ::IA2_ROLE_SCROLL_PANE. - */ - IA2_ROLE_VIEW_PORT, - - /** An object containing content which is complementary to the main content of - a document, but remains meaningful when separated from the main content. There - are various types of content that would appropriately have this role. For example, - in the case where content is delivered via a web portal to a web browser, this may - include but not be limited to show times, current weather, related articles, or - stocks to watch. The complementary role indicates that contained content is relevant - to the main content. If the complementary content is completely separable main - content, it may be appropriate to use a more general role. - */ - IA2_ROLE_COMPLEMENTARY_CONTENT - -}; diff --git a/src/3rdparty/iaccessible2/idl/AccessibleStates.idl b/src/3rdparty/iaccessible2/idl/AccessibleStates.idl deleted file mode 100644 index 0304b643da..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleStates.idl +++ /dev/null @@ -1,209 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleStates.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; - -typedef long AccessibleStates; - -/** %IAccessible2 specific state bit constants - - This enum defines the state bits returned by IAccessible2::states. The - %IAccessible2 state bits are in addition to those returned by MSAA. -*/ -enum IA2States { - -/** Indicates a window is currently the active window, or is an active subelement - within a container or table. - - This state can be used to indicate the current active item in a container, even - if the container itself is not currently active. In other words this would indicate - the item that will get focus if you tab to the container. - - This information is important for knowing what to report for trees and potentially - other containers in a virtual buffer. - - Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. -*/ -IA2_STATE_ACTIVE = 0x1, - -/** Indicates that the object is armed. - - Used to indicate that the control is "pressed" and will be invoked when the - actuator, e.g. a mouse button, is "released". An AT which either monitors the - mouse or synthesizes mouse events might need to know that, and possibly a talking - interface would even let the user know about it. It could also potentially be - useful to on screen keyboards or test tools since the information does indicate - something about the state of the interface, for example, code operating asynchronously - might need to wait for the armed state to change before doing something else. - -*/ -IA2_STATE_ARMED = 0x2, - -/** Indicates the user interface object corresponding to this object no longer exists. */ -IA2_STATE_DEFUNCT = 0x4, - -/** An object with this state has a caret and implements the IAccessibleText interface. - - Such fields may be read-only, so STATE_SYSTEM_READONLY is valid in combination - with IA2_STATE_EDITABLE. - -*/ -IA2_STATE_EDITABLE = 0x8, - -/** Indicates the orientation of this object is horizontal. */ -IA2_STATE_HORIZONTAL = 0x10, - -/** Indicates this object is minimized and is represented only by an icon. */ -IA2_STATE_ICONIFIED = 0x20, - -/** Indicates an input validation failure. */ -IA2_STATE_INVALID_ENTRY = 0x40, - -/** Indicates that this object manages its children. - - Note: Due to the fact that MSAA's WinEvents don't allow the active child index - to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages - descendants scheme can't be used. Instead the active child object has to fire - MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be - added to provide for event specific data to be passed with the event. At that - time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and - IA2_STATE_MANAGES_DESCENDANTS state would be useful. -*/ -IA2_STATE_MANAGES_DESCENDANTS = 0x80, - -/** Indicates that an object is modal. - - Modal objects have the behavior that something must be done with the object - before the user can interact with an object in a different window. -*/ -IA2_STATE_MODAL = 0x100, - -/** Indicates this text object can contain multiple lines of text. */ -IA2_STATE_MULTI_LINE = 0x200, - -/** Indicates this object paints every pixel within its rectangular region. */ -IA2_STATE_OPAQUE = 0x400, - -/** Indicates that user interaction is required. - - An example of when this state is used is when a field in a form must be filled - before a form can be processed. -*/ -IA2_STATE_REQUIRED = 0x800, - -/** Indicates an object which supports text selection. - - Note: This is different than MSAA STATE_SYSTEM_SELECTABLE. -*/ -IA2_STATE_SELECTABLE_TEXT = 0x1000, - -/** Indicates that this text object can contain only a single line of text. */ -IA2_STATE_SINGLE_LINE = 0x2000, - -/** Indicates that the accessible object is stale. - - This state is used when the accessible object no longer accurately - represents the state of the object which it is representing such as when an - object is transient or when an object has been or is in the process of being - destroyed or when the object's index in its parent has changed. -*/ -IA2_STATE_STALE = 0x4000, - -/** Indicates that the object implements autocompletion. - - This state indicates that a text control will respond to the input of - one ore more characters and cause a sub-item to become selected. The - selection may also result in events fired on the parent object. -*/ -IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000, - -/** Indicates this object is transient. - - An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS. - For example, a list item object may be managed by its parent list object and may only - exist as long as the object is actually rendered. Similarly a table cell's accessible - object may exist only while the cell has focus. However, from the perspective of an - assistive technology a transient object behaves like a non-transient object. As a - result it is likely that this state is not of use to an assistive technology, but it - is provided in case an assistive technology determines that knowledge of the transient - nature of the object is useful and also for harmony with the Linux accessibility API. - - Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. - */ -IA2_STATE_TRANSIENT = 0x10000, - -/** Indicates the orientation of this object is vertical. */ -IA2_STATE_VERTICAL = 0x20000, - -/** Indicates this object is checkable. - - The standard checkable objects are check boxes, radio buttons, check box menu - items, radio menu items, and toggle buttons. Since assistive technology will - determine that these objects are checkable via the object's role the checkable - state is not required. However, this state is necessary in those cases where - an object has a role which is not one of the previously mentioned roles. An - example is a table cell which indicates whether or not an email has an attachment, - whether or not an mail is considered spam, and whether or not an email has been read. - */ -IA2_STATE_CHECKABLE = 0x40000, - -/** Indicates this object is pinned. - - This state indicates that an object is fixed at a certain location. One example - is a browser tab that when pinned cannot be moved until unpinned. Another example - is a movable or floating object that when pinned remains in its pinned location - until being unpinned. - */ -IA2_STATE_PINNED = 0x80000 - -}; diff --git a/src/3rdparty/iaccessible2/idl/AccessibleTable.idl b/src/3rdparty/iaccessible2/idl/AccessibleTable.idl deleted file mode 100644 index 69c99a7515..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleTable.idl +++ /dev/null @@ -1,551 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleTable.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "Accessible2.idl"; -import "IA2CommonTypes.idl"; - -/** @brief This interface gives access to a two-dimensional table. - - Typically all accessible objects that represent cells or cell-clusters of a table - will be at the same time children of the table. In this case IAccessible2::indexInParent - will return the child index which then can be used when calling IAccessibleTable::rowIndex - and IAccessibleTable::columnIndex. - - However, in some cases that kind of implementation will not be possible. When - the table cells are not direct children of a table, the object representing - the cell can define a "table-cell-index" object attribute identifying the 0 - based table cell index. This object attribute is obtained by parsing the - attribute string returned by IAccessible2::attributes. The "table-cell-index" - attribute can be used just like a child index of the typical case. ATs should - first test for the presence of the "table-cell-index" attribute and if it is not - present then IAccessible2::indexInParent can be used as in the typical case - where cells are direct children of the table. - - The range of valid coordinates for this interface are implementation dependent. - However, that range includes at least the intervals from the from the first row - or column with the index 0 up to the last (but not including) used row or column - as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns. - - Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell - rather than this interface. -*/ -[object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)] -interface IAccessibleTable : IUnknown -{ - - /** @brief Returns the accessible object at the specified row and column in - the table. This object could be an IAccessible or an IAccessible2. - @param [in] row - The 0 based row index for which to retrieve the cell. - @param [in] column - The 0 based column index for which to retrieve the cell. - @param [out] accessible - If both row and column index are valid then the corresponding accessible - object is returned that represents the requested cell regardless of whether - the cell is currently visible (on the screen). - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is NULL - */ - [propget] HRESULT accessibleAt - ( - [in] long row, - [in] long column, - [out, retval] IUnknown **accessible - ); - - /** @brief Returns the caption for the table. The returned object could be - an IAccessible or an IAccessible2. - @param [out] accessible - If the table has a caption then a reference to it is returned, else a NULL - pointer is returned. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT caption - ( - [out, retval] IUnknown **accessible - ); - - /** @brief Translates the given row and column indexes into the corresponding cell index. - @param [in] rowIndex - 0 based row index for the cell. - @param [in] columnIndex - 0 based column index for the cell. - @param [out] cellIndex - Returns the 0 based index of the cell at the specified row and column indexes. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is 0 - @note The returned value is not necessarily a child index of the immediate parent. - In cases where the table cells are not direct children of the table the index - is actually the cell index, i.e. conceptually it's an index into a one dimensional - array of cells laid out in row order. - */ - [propget] HRESULT childIndex - ( - [in] long rowIndex, - [in] long columnIndex, - [out, retval] long *cellIndex - ); - - /** @brief Returns the description text of the specified column in the table. - @param [in] column - The 0 based index of the column for which to retrieve the description. - @param [out] description - Returns the description text of the specified column in the table if such a - description exists. Otherwise a NULL pointer is returned. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - @retval E_INVALIDARG if bad [in] passed, [out] value is NULL - */ - [propget] HRESULT columnDescription - ( - [in] long column, - [out, retval] BSTR *description - ); - - /** @brief Returns the number of columns occupied by the accessible object - at the specified row and column in the table. - - The result is greater than 1 if the specified cell spans multiple columns. - @param [in] row - 0 based row index of the accessible for which to return the column extent. - @param [in] column - 0 based column index of the accessible for which to return the column extent. - @param [out] nColumnsSpanned - Returns the 1 based column extent of the specified cell. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is 0 - */ - [propget] HRESULT columnExtentAt - ( - [in] long row, - [in] long column, - [out, retval] long *nColumnsSpanned - ); - - /** @brief Returns the column headers as an %IAccessibleTable object. - - Content and size of the returned table are implementation dependent. - @param [out] accessibleTable - The column header - @param [out] startingRowIndex - The 0 based row index where the header starts, usually 0. - @retval S_OK - @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively - */ - [propget] HRESULT columnHeader - ( - [out] IAccessibleTable **accessibleTable, - [out, retval] long *startingRowIndex - ); - - /** @brief Translates the given cell index into the corresponding column index. - @param [in] cellIndex - 0 based index of the cell in the parent or closest ancestor table. Typically this - is the value returned from IAccessible2::indexInParent, but in the case where the - table cells are not direct children of the table this is the cell index specified - by the "table-cell-index" object attribute obtained from parsing the attributes - string returned by calling IAccessible2::attributes on the cell object. - @param [out] columnIndex - Returns the 0 based column index of the cell of the specified child or the index of - the first column if the child spans multiple columns. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is 0 - */ - [propget] HRESULT columnIndex - ( - [in] long cellIndex, - [out, retval] long *columnIndex - ); - - /** @brief Returns the total number of columns in table - @param [out] columnCount - Number of columns in table (including columns outside the current viewport) - @retval S_OK - */ - [propget] HRESULT nColumns - ( - [out, retval] long *columnCount - ); - - /** @brief Returns the total number of rows in table - @param [out] rowCount - Number of rows in table (including rows outside the current viewport) - @retval S_OK - */ - [propget] HRESULT nRows - ( - [out, retval] long *rowCount - ); - - /** @brief Returns the total number of selected cells - @param [out] cellCount - Number of cells currently selected - @retval S_OK - */ - [propget] HRESULT nSelectedChildren - ( - [out, retval] long *cellCount - ); - - /** @brief Returns the total number of selected columns - @param [out] columnCount - Number of columns currently selected - @retval S_OK - */ - [propget] HRESULT nSelectedColumns - ( - [out, retval] long *columnCount - ); - - /** @brief Returns the total number of selected rows - @param [out] rowCount - Number of rows currently selected - @retval S_OK - */ - [propget] HRESULT nSelectedRows - ( - [out, retval] long *rowCount - ); - - /** @brief Returns the description text of the specified row in the table. - @param [in] row - The 0 based index of the row for which to retrieve the description. - @param [out] description - Returns the description text of the specified row in the table if such a - description exists. Otherwise a NULL pointer is returned. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - @retval E_INVALIDARG if bad [in] passed, [out] value is NULL - */ - [propget] HRESULT rowDescription - ( - [in] long row, - [out, retval] BSTR *description - ); - - /** @brief Returns the number of rows occupied by the accessible object - at the specified row and column in the table. - - The result is greater than 1 if the specified cell spans multiple rows. - @param [in] row - 0 based row index of the accessible for which to return the row extent. - @param [in] column - 0 based column index of the accessible for which to return the row extent. - @param [out] nRowsSpanned - Returns the row extent of the specified cell. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is 0 - */ - [propget] HRESULT rowExtentAt - ( - [in] long row, - [in] long column, - [out, retval] long *nRowsSpanned - ); - - /** @brief Returns the row headers as an %IAccessibleTable object. - - Content and size of the returned table are implementation dependent. - @param [out] accessibleTable - The row header. - @param [out] startingColumnIndex - The 0 based column index where the header starts, usually 0. - @retval S_OK - @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively - */ - [propget] HRESULT rowHeader - ( - [out] IAccessibleTable **accessibleTable, - [out, retval] long *startingColumnIndex - ); - - /** @brief Translates the given cell index into a row index. - @param [in] cellIndex - 0 based index of the cell in the parent or closest ancestor table. Typically this - is the value returned from IAccessible2::indexInParent, but in the case where the - table cells are not direct children of the table this is the cell index specified - by the "table-cell-index" object attribute obtained from parsing the attributes - string returned by calling IAccessible2::attributes on the cell object. - @param [out] rowIndex - 0 based row index - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is 0 - */ - [propget] HRESULT rowIndex - ( - [in] long cellIndex, - [out, retval] long *rowIndex - ); - - /** @brief Returns a list of cell indexes currently selected (0 based). - @param [in] maxChildren - This parameter is ignored. Refer to @ref _arrayConsideration - "Special Consideration when using Arrays" for more details. - @param [out] children - An array of cell indexes of selected cells (each index is 0 based), - allocated by the server. Free it with CoTaskMemFree. - @param [out] nChildren - The number of cell indexes returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are none, [out] values are NULL and 0 respectively - */ - [propget] HRESULT selectedChildren - ( - [in] long maxChildren, - [out, size_is(,maxChildren), length_is(,*nChildren)] long **children, - [out, retval] long *nChildren - ); - - /** @brief Returns a list of column indexes currently selected (0 based). - @param [in] maxColumns - This parameter is ignored. Refer to @ref _arrayConsideration - "Special Consideration when using Arrays" for more details. - @param [out] columns - An array of column indexes of selected columns (each index is 0 based), allocated - by the server. Free it with CoTaskMemFree. - @param [out] nColumns - The number of column indexes returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are none, [out] values are NULL and 0 respectively - */ - [propget] HRESULT selectedColumns - ( - [in] long maxColumns, - [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns, - [out, retval] long *nColumns - ); - - /** @brief Returns a list of row indexes currently selected (0 based). - @param [in] maxRows - This parameter is ignored. Refer to @ref _arrayConsideration - "Special Consideration when using Arrays" for more details. - @param [out] rows - An array of row indexes of selected rows (each index is 0 based), allocated - by the server. Free it with CoTaskMemFree. - @param [out] nRows - The number of row indexes returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are none, [out] values are NULL and 0 respectively - */ - [propget] HRESULT selectedRows - ( - [in] long maxRows, - [out, size_is(,maxRows), length_is(,*nRows)] long **rows, - [out, retval] long *nRows - ); - - /** @brief Returns the summary description of the table. The returned object could be - an IAccessible or an IAccessible2. - @param [out] accessible - Returns a reference to an implementation dependent accessible object - representing the table's summary or a NULL pointer if the table - does not support a summary. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT summary - ( - [out, retval] IUnknown **accessible - ); - - /** @brief Returns a boolean value indicating whether the specified column is - completely selected. - @param [in] column - 0 based index of the column for which to determine whether it is selected. - @param [out] isSelected - Returns TRUE if the specified column is selected completely and FALSE otherwise. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE - */ - [propget] HRESULT isColumnSelected - ( - [in] long column, - [out, retval] boolean *isSelected - ); - - /** @brief Returns a boolean value indicating whether the specified row is completely - selected. - @param [in] row - 0 based index of the row for which to determine whether it is selected. - @param [out] isSelected - Returns TRUE if the specified row is selected completely and FALSE otherwise. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE - */ - [propget] HRESULT isRowSelected - ( - [in] long row, - [out, retval] boolean *isSelected - ); - - /** @brief Returns a boolean value indicating whether the specified cell is selected. - @param [in] row - 0 based index of the row for the cell to determine whether it is selected. - @param [in] column - 0 based index of the column for the cell to determine whether it is selected. - @param [out] isSelected - Returns TRUE if the specified cell is selected and FALSE otherwise. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE - */ - [propget] HRESULT isSelected - ( - [in] long row, - [in] long column, - [out, retval] boolean *isSelected - ); - - /** @brief Selects a row and unselects all previously selected rows. - @param [in] row - 0 based index of the row to be selected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT selectRow - ( - [in] long row - ); - - /** @brief Selects a column and unselects all previously selected columns. - @param [in] column - 0 based index of the column to be selected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT selectColumn - ( - [in] long column - ); - - /** @brief Unselects one row, leaving other selected rows selected (if any). - @param [in] row - 0 based index of the row to be unselected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT unselectRow - ( - [in] long row - ); - - /** @brief Unselects one column, leaving other selected columns selected (if any). - @param [in] column - 0 based index of the column to be unselected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT unselectColumn - ( - [in] long column - ); - - /** @brief Given a cell index, gets the row and column indexes and extents of a cell - and whether or not it is selected. - - This is a convenience function. It is not mandatory to implement it. - @param [in] index - 0 based index of this cell in the table. - @param [out] row - 0 based row index. - @param [out] column - 0 based column index. - @param [out] rowExtents - Number of cells spanned by this cell in this row. - @param [out] columnExtents - Number of cells spanned by this cell in this column. - @param [out] isSelected - Indicates if the specified cell is selected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively - */ - [propget] HRESULT rowColumnExtentsAtIndex - ( - [in] long index, - [out] long *row, - [out] long *column, - [out] long *rowExtents, - [out] long *columnExtents, - [out, retval] boolean *isSelected - ); - - /** @brief Returns the type and extents describing how a table changed. - - Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler. - - This data is only guaranteed to be valid while the thread notifying the event - continues. Once the handler has returned, the validity of the data depends on - how the server manages the life cycle of its objects. Also, note that the server - may have different life cycle management strategies for controls depending on - whether or not a control manages its children. Lists, trees, and tables can have - a large number of children and thus it's possible that the child objects for those - controls would only be created as needed. Servers should document their life cycle - strategy as this will be of interest to assistive technology or script engines - accessing data out of process or from other threads. Servers only need to save the - most recent row and column values associated with the change and a scope of the - entire application is adequate. - - @param [out] modelChange - A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn). - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT modelChange - ( - [out, retval] IA2TableModelChange *modelChange - ); - -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleTable2.idl b/src/3rdparty/iaccessible2/idl/AccessibleTable2.idl deleted file mode 100644 index 9d7f3e4475..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleTable2.idl +++ /dev/null @@ -1,375 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleTable2.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "Accessible2.idl"; -import "IA2CommonTypes.idl"; - -/** @brief This interface gives access to a two-dimensional table. - - Please also refer to the IAccessibleTableCell interface. - - If you want to support older applications you should also support the - IAccessibleTable inteface. -*/ -[object, uuid(6167f295-06f0-4cdd-a1fa-02e25153d869)] -interface IAccessibleTable2 : IUnknown -{ - - /** @brief Returns the accessible object at the specified row and column in - the table. This object could be an IAccessible or an IAccessible2. - @param [in] row - The 0 based row index for which to retrieve the cell. - @param [in] column - The 0 based column index for which to retrieve the cell. - @param [out] cell - If both row and column index are valid then the corresponding accessible - object is returned that represents the requested cell regardless of whether - the cell is currently visible (on the screen). - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT cellAt - ( - [in] long row, - [in] long column, - [out, retval] IUnknown **cell - ); - - /** @brief Returns the caption for the table. The returned object could be - an IAccessible or an IAccessible2. - @param [out] accessible - If the table has a caption then a reference to it is returned, else a NULL - pointer is returned. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT caption - ( - [out, retval] IUnknown **accessible - ); - - /** @brief Returns the description text of the specified column in the table. - @param [in] column - The 0 based index of the column for which to retrieve the description. - @param [out] description - Returns the description text of the specified column in the table if such a - description exists. Otherwise a NULL pointer is returned. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT columnDescription - ( - [in] long column, - [out, retval] BSTR *description - ); - - - /** @brief Returns the total number of columns in table - @param [out] columnCount - Number of columns in table (including columns outside the current viewport) - @retval S_OK - */ - [propget] HRESULT nColumns - ( - [out, retval] long *columnCount - ); - - /** @brief Returns the total number of rows in table - @param [out] rowCount - Number of rows in table (including rows outside the current viewport) - @retval S_OK - */ - [propget] HRESULT nRows - ( - [out, retval] long *rowCount - ); - - /** @brief Returns the total number of selected cells - @param [out] cellCount - Number of cells currently selected - @retval S_OK - */ - [propget] HRESULT nSelectedCells - ( - [out, retval] long *cellCount - ); - - /** @brief Returns the total number of selected columns - @param [out] columnCount - Number of columns currently selected - @retval S_OK - */ - [propget] HRESULT nSelectedColumns - ( - [out, retval] long *columnCount - ); - - /** @brief Returns the total number of selected rows - @param [out] rowCount - Number of rows currently selected - @retval S_OK - */ - [propget] HRESULT nSelectedRows - ( - [out, retval] long *rowCount - ); - - /** @brief Returns the description text of the specified row in the table. - @param [in] row - The 0 based index of the row for which to retrieve the description. - @param [out] description - Returns the description text of the specified row in the table if such a - description exists. Otherwise a NULL pointer is returned. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT rowDescription - ( - [in] long row, - [out, retval] BSTR *description - ); - - /** @brief Returns a list of accessibles currently selected. - @param [out] cells - Pointer to an array of references to selected accessibles. The array is - allocated by the server with CoTaskMemAlloc and freed by the client with - CoTaskMemFree. - @param [out] nSelectedCells - The number of accessibles returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are none, [out] values are NULL and 0 respectively - */ - [propget] HRESULT selectedCells - ( - [out, size_is(,*nSelectedCells,)] IUnknown ***cells, - [out, retval] long *nSelectedCells - ); - - /** @brief Returns a list of column indexes currently selected (0 based). - @param [out] selectedColumns - A pointer to an array of column indexes of selected columns (each index is - 0 based). The array is allocated by the server with CoTaskMemAlloc and - freed by the client with CoTaskMemFree. - @param [out] nColumns - The number of column indexes returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are none, [out] values are NULL and 0 respectively - */ - [propget] HRESULT selectedColumns - ( - [out, size_is(,*nColumns)] long **selectedColumns, - [out, retval] long *nColumns - ); - - /** @brief Returns a list of row indexes currently selected (0 based). - @param [out] selectedRows - An array of row indexes of selected rows (each index is 0 based). The array - is allocated by the server with CoTaskMemAlloc and freed by the client with - CoTaskMemFree. - @param [out] nRows - The number of row indexes returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there are none, [out] values are NULL and 0 respectively - */ - [propget] HRESULT selectedRows - ( - [out, size_is(,*nRows)] long **selectedRows, - [out, retval] long *nRows - ); - - /** @brief Returns the summary description of the table. The returned object could be - an IAccessible or an IAccessible2. - @param [out] accessible - Returns a reference to an implementation dependent accessible object - representing the table's summary or a NULL pointer if the table - does not support a summary. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT summary - ( - [out, retval] IUnknown **accessible - ); - - /** @brief Returns a boolean value indicating whether the specified column is - completely selected. - @param [in] column - 0 based index of the column for which to determine whether it is selected. - @param [out] isSelected - Returns TRUE if the specified column is selected completely and FALSE otherwise. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT isColumnSelected - ( - [in] long column, - [out, retval] boolean *isSelected - ); - - /** @brief Returns a boolean value indicating whether the specified row is completely - selected. - @param [in] row - 0 based index of the row for which to determine whether it is selected. - @param [out] isSelected - Returns TRUE if the specified row is selected completely and FALSE otherwise. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT isRowSelected - ( - [in] long row, - [out, retval] boolean *isSelected - ); - - /** @brief Selects a row and unselects all previously selected rows. - - The behavior should mimic that of the application, but for those applications - which do not have a means in the GUI to select a full row of cells the behavior - should be as follows: First any selected rows in the table are unselected. Then - the entire row of cells for the specified row is selected. If any of the - cells in the selected row span additional rows, the cells in those rows - are also selected. - @param [in] row - 0 based index of the row to be selected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT selectRow - ( - [in] long row - ); - - /** @brief Selects a column and unselects all previously selected columns. - - The behavior should mimic that of the application, but for those applications - which do not have a means in the GUI to select a full column of cells the behavior - should be as follows: First any selected columns in the table are unselected. Then - the entire column of cells for the specified column is selected. If any of the - cells in the selected column span additional columns, the cells in those columns - are also selected. - @param [in] column - 0 based index of the column to be selected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT selectColumn - ( - [in] long column - ); - - /** @brief Unselects one row, leaving other selected rows selected (if any). - - The behavior should mimic that of the application, but for those applications - which do not have a means in the GUI to unselect a full row of cells the - behavior should be as follows: The entire row of cells for the specified - row is unselected. If any of the cells in the selected row span additional - rows, the cells in those rows are also unselected. - @param [in] row - 0 based index of the row to be unselected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT unselectRow - ( - [in] long row - ); - - /** @brief Unselects one column, leaving other selected columns selected (if any). - - The behavior should mimic that of the application, but for those applications - which do not have a means in the GUI to unselect a full column of cells the - behavior should be as follows: The entire column of cells for the specified - column is unselected. If any of the cells in the selected column span additional - columns, the cells in those columns are also unselected. - @param [in] column - 0 based index of the column to be unselected. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT unselectColumn - ( - [in] long column - ); - - /** @brief Returns the type and extents describing how a table changed. - - Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler. - - This data is only guaranteed to be valid while the thread notifying the event - continues. Once the handler has returned, the validity of the data depends on - how the server manages the life cycle of its objects. Also, note that the server - may have different life cycle management strategies for controls depending on - whether or not a control manages its children. Lists, trees, and tables can have - a large number of children and thus it's possible that the child objects for those - controls would only be created as needed. Servers should document their life cycle - strategy as this will be of interest to assistive technology or script engines - accessing data out of process or from other threads. Servers only need to save the - most recent row and column values associated with the change and a scope of the - entire application is adequate. - - @param [out] modelChange - A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn). - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is NULL - */ - [propget] HRESULT modelChange - ( - [out, retval] IA2TableModelChange *modelChange - ); - -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleTableCell.idl b/src/3rdparty/iaccessible2/idl/AccessibleTableCell.idl deleted file mode 100644 index a4cd988384..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleTableCell.idl +++ /dev/null @@ -1,194 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleTableCell.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "Accessible2.idl"; - -/** @brief This interface gives access to the cells of a two-dimensional table. - - Please also refer to the IAccessibleTable2 interface. - -*/ -[object, uuid(594116B1-C99F-4847-AD06-0A7A86ECE645)] -interface IAccessibleTableCell : IUnknown -{ - - /** @brief Returns the number of columns occupied by this cell accessible. - - The result is greater than 1 if the specified cell spans multiple columns. - @param [out] nColumnsSpanned - Returns the 1 based column extent of the specified cell. - @retval S_OK - */ - [propget] HRESULT columnExtent - ( - [out, retval] long *nColumnsSpanned - ); - - /** @brief Returns the column headers as an array of cell accessibles. - - @param [out] cellAccessibles - Pointer to an array of references to cell accessibles. The array is allocated - by the server. Free it with CoTaskMemFree. - @param [out] nColumnHeaderCells - The number of accessibles returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively - */ - [propget] HRESULT columnHeaderCells - ( - [out, size_is(,*nColumnHeaderCells,)] IUnknown ***cellAccessibles, - [out, retval] long *nColumnHeaderCells - ); - - /** @brief Translates this cell accessible into the corresponding column index. - - @param [out] columnIndex - Returns the 0 based column index of the cell of the specified cell or the index of - the first column if the cell spans multiple columns. - @retval S_OK - */ - [propget] HRESULT columnIndex - ( - [out, retval] long *columnIndex - ); - - /** @brief Returns the number of rows occupied by this cell accessible. - - @param [out] nRowsSpanned - Returns the row extent of the specified cell. - @retval S_OK - */ - [propget] HRESULT rowExtent - ( - [out, retval] long *nRowsSpanned - ); - - /** @brief Returns the row headers as an array of cell accessibles. - - @param [out] cellAccessibles - Pointer to an array of references to cell accessibles. The array is allocated - by the server. Free it with CoTaskMemFree. - @param [out] nRowHeaderCells - The number of accessibles returned; the size of the returned array. - @retval S_OK - @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively - */ - [propget] HRESULT rowHeaderCells - ( - [out, size_is(,*nRowHeaderCells,)] IUnknown ***cellAccessibles, - [out, retval] long *nRowHeaderCells - ); - - /** @brief Translates this cell accessible into the corresponding row index. - - @param [out] rowIndex - Returns the 0 based row index of the specified cell or the index of - the first row if the cell spans multiple rows. - @retval S_OK - */ - [propget] HRESULT rowIndex - ( - [out, retval] long *rowIndex - ); - - /** @brief Returns a boolean value indicating whether this cell is selected. - - @param [out] isSelected - Returns TRUE if the specified cell is selected and FALSE otherwise. - @retval S_OK - */ - [propget] HRESULT isSelected - ( - [out, retval] boolean *isSelected - ); - - /** @brief Gets the row and column indexes and extents of this cell accessible - and whether or not it is selected. - - This is a convenience function. It is not mandatory to implement it. - @param [out] row - 0 based row index. - @param [out] column - 0 based column index. - @param [out] rowExtents - Number of cells spanned by this cell in this row. - @param [out] columnExtents - Number of cells spanned by this cell in this column. - @param [out] isSelected - Indicates if the specified cell is selected. - @retval S_OK - */ - [propget] HRESULT rowColumnExtents - ( - [out] long *row, - [out] long *column, - [out] long *rowExtents, - [out] long *columnExtents, - [out, retval] boolean *isSelected - ); - - /** @brief Returns a reference to the accessbile of the containing table. - - @param [out] table - Returns a reference to the IUnknown of the containing table. - @retval S_OK - */ - [propget] HRESULT table - ( - [out, retval] IUnknown **table - ); - -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleText.idl b/src/3rdparty/iaccessible2/idl/AccessibleText.idl deleted file mode 100644 index 86fd93ad90..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleText.idl +++ /dev/null @@ -1,674 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleText.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; -import "IA2CommonTypes.idl"; - -/** A structure containing a substring and the start and end offsets in the enclosing string. - - IAccessibleText::newText and IAccessibleText::oldText return this struct. -*/ -typedef struct IA2TextSegment { - BSTR text; ///< A copy of a segment of text taken from an enclosing paragraph. - long start; ///< Index of the first character of the segment in the enclosing text. - long end; ///< Index of the character following the last character of the segment in the enclosing text. -} IA2TextSegment; - -/** This enum defines values which specify a text boundary type. - - IA2_TEXT_BOUNDARY_SENTENCE is optional. When a method doesn't implement this - method it must return S_FALSE. Typically this feature would not be implemented - by an application. However, if the application developer was not satisfied with - how screen readers have handled the reading of sentences this boundary type - could be implemented and screen readers could use the application's version of a - sentence rather than the screen reader's. - - The rest of the boundary types must be supported. - - This enum is used in IAccessibleText::textBeforeOffset, IAccessibleText::textAtOffset, - and IAccessibleText::textAfterOffset. -*/ - -enum IA2TextBoundaryType { - IA2_TEXT_BOUNDARY_CHAR, /**< Typically, a single character is returned. In some cases more than - one character is returned, for example, when a document contains field - data such as a field containing a date, time, or footnote reference. - In this case the caret can move over several characters in one movement - of the caret. Note that after the caret moves, the caret offset changes - by the number of characters in the field, e.g. by 8 characters in the - following date: 03/26/07. */ - IA2_TEXT_BOUNDARY_WORD, /**< The range provided matches the range observed when the application - processes the Ctrl + left arrow and Ctrl + right arrow key sequences. - Typically this is from the start of one word to the start of the next, but - various applications are inconsistent in the handling of the end of a line. */ - IA2_TEXT_BOUNDARY_SENTENCE, ///< Range is from start of one sentence to the start of another sentence. - IA2_TEXT_BOUNDARY_PARAGRAPH, ///< Range is from start of one paragraph to the start of another paragraph. - IA2_TEXT_BOUNDARY_LINE, /**< Range is from start of one line to the start of another line. This - often means that an end-of-line character will appear at the end of the - range. However in the case of some applications an end-of-line character - indicates the end of a paragraph and the lines composing the paragraph, - other than the last line, do not contain an end of line character. */ - IA2_TEXT_BOUNDARY_ALL ///< Using this value will cause all text to be returned. -}; - -/** @brief This interface gives read-only access to text. - - The %IAccessibleText interface should be implemented by all components - that present textual information on the display like buttons, - text entry fields, or text portions of the document window. The interface - provides access to the text's content, attributes, and spatial location. - However, text can not be modified with this interface. That is the task - of the IAccessibleEditableText interface. - - The text length, i.e. the number of characters in the text, is - returned by IAccessibleText::nCharacters. All methods that operate - on particular characters (e.g. IAccessibleText::textAtOffset) use character - indices from 0 to length-1. All methods that operate on character positions - (e.g. IAccessibleText::text) use indices from 0 to length. - - Please note that accessible text does not necessarily support selection. - In this case it should behave as if there where no selection. An empty - selection is used for example to express the current cursor position. - - Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - - E_FAIL is returned in the following cases - @li endOffset < startOffset - @li endoffset > length -*/ -[object, uuid(24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B)] -interface IAccessibleText : IUnknown -{ - - /** @brief Adds a text selection - @param [in] startOffset - Starting offset ( 0 based). - @param [in] endOffset - Offset of first character after new selection (0 based). - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - */ - HRESULT addSelection - ( - [in] long startOffset, - [in] long endOffset - ); - - /** @brief Returns text attributes. - @param [in] offset - Text offset (0 based). Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - @param [out] startOffset - The starting offset of the character range over which all text attributes match - those of offset. (0 based) - @param [out] endOffset - The offset of the first character past the character range over which all text - attributes match those of offset. (0 based) - @param [out] textAttributes - A string of attributes describing the text. The attributes are described in the - <a href="http://www.linuxfoundation.org/en/Accessibility/IAccessible2/TextAttributes"> - text attributes specification</a> on the %IAccessible2 web site. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] values are 0s and NULL respectively - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT attributes - ( - [in] long offset, - [out] long *startOffset, - [out] long *endOffset, - [out, retval] BSTR *textAttributes - ); - - /** @brief Returns the position of the caret. - - Returns the 0-based offset of the caret within the text. If the text is - implemented as a tree of text objects with embed characters in higher levels - representing substrings of child text objects and the caret is in one of the - child text objects, then the offset in the higher level text object would be - at the embed character representing child text object that contains the caret. - - For example, if the string "one two three" is implemented as a two text objects, - with a top level text object containing an embed character "one ? three" and a - child text object containing "two" and if the caret is in the descendant object - just before the 'o' in "two", then: - <ul> - <li>the caretOffset for the "one ? three" object would be 4, matching the embed character</li> - <li>the caretOffset for "two" would be 2, matching the "o"</li> - </ul> - The caret position/offset is that of the character logically following it, e.g. - to the right of it in a left to right language, or to the left of it in a right - to left language. - @param [out] offset - The returned offset is relative to the text represented by this object. - @retval S_OK - @retval S_FALSE if the caret is not currently active on this object, i.e. the - caret is located on some other object. The returned offset value will be -1. - @note S_FALSE (and an offset of -1) will not be returned if the caret is somewhere - in the text object or one of its descendants. - */ - [propget] HRESULT caretOffset - ( - [out, retval] long *offset - ); - - - /** @brief Returns the bounding box of the specified position. - - The virtual character after the last character of the represented - text, i.e. the one at position length is a special case. It represents the - current input position and will therefore typically be queried by AT more - often than other positions. Because it does not represent an existing character - its bounding box is defined in relation to preceding characters. It should be - roughly equivalent to the bounding box of some character when inserted at the - end of the text. Its height typically being the maximal height of all the - characters in the text or the height of the preceding character, its width being - at least one pixel so that the bounding box is not degenerate. - - Note that the index 'length' is not always valid. Whether it is or not is - implementation dependent. It typically is when text is editable or otherwise - when on the screen the caret can be placed behind the text. You can be sure - that the index is valid after you have received a ::IA2_EVENT_TEXT_CARET_MOVED - event for this index. - @param [in] offset - Index of the character for which to return its bounding box. The valid range - is 0..length. Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - @param [in] coordType - Specifies if the coordinates are relative to the screen or to the parent window. - @param [out] x - X coordinate of the top left corner of the bounding box of the referenced character. - @param [out] y - Y coordinate of the top left corner of the bounding box of the referenced character. - @param [out] width - Width of the bounding box of the referenced character. - @param [out] height - Height of the bounding box of the referenced character. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT characterExtents - ( - [in] long offset, - [in] enum IA2CoordinateType coordType, - [out] long *x, - [out] long *y, - [out] long *width, - [out, retval] long *height - ); - - - /** @brief Returns the number of active non-contiguous selections - @param [out] nSelections - @retval S_OK - */ - [propget] HRESULT nSelections - ( - [out, retval] long *nSelections - ); - - /** @brief Returns the text position for the specified screen position. - - Given a point return the zero-based index of the character under that - point. The same functionality could be achieved by using the bounding - boxes for each character as returned by IAccessibleText::characterExtents. - The method IAccessibleText::offsetAtPoint, however, can be implemented - more efficiently. - - @param [in] x - The position's x value for which to look up the index of the character that - is rendered on to the display at that point. - @param [in] y - The position's y value for which to look up the index of the character that - is rendered on to the display at that point. - @param [in] coordType - Screen coordinates or window coordinates. - @param [out] offset - Index of the character under the given point or -1 if the point - is invalid or there is no character under the point. - @retval S_OK - @retval S_FALSE if nothing to return, [out] value is -1 - - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT offsetAtPoint - ( - [in] long x, - [in] long y, - [in] enum IA2CoordinateType coordType, - [out, retval] long *offset - ); - - /** @brief Returns the character offsets of Nth active text selection - - Returns the 0-based starting and ending offsets of the Nth selection. If the - text is implemented as a tree of text objects with embed characters in higher - levels representing substrings of child text objects, consider the following. - If the starting selection offset is in one of the child text objects, then the - starting offset in the higher level text object would be at the embed character - representing the child text object that contains the starting selection offset. - If the ending selection offset is in one of the child text objects, then the - ending offset in the higher level text object would be just after the embed - character representing the child text object that contains the ending selection - offset. - - For example, if the string "one two three" is implemented as a two text objects, - with a top level text object containing an embed character "one ? three" and a - child text object containing "two" and if the selection is the string "two" then: - <ul> - <li>the startOffset for the "one ? three" object would be 4, matching the embed character and the endOffset would be 5.</li> - <li>the startOffset for the "two" object would be 0, and the endOffset would be 3</li> - </ul> - Selection offsets are that of the character logically following it, e.g. - to the right of it in a left to right language or to the left of it in a right to left language. - @param [in] selectionIndex - Index of selection (0 based). - @param [out] startOffset - 0 based offset of first selected character - @param [out] endOffset - 0 based offset of one past the last selected character. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT selection - ( - [in] long selectionIndex, - [out] long *startOffset, - [out, retval] long *endOffset - ); - - /** @brief Returns the substring between the two given indices. - - The substring starts with the character at startOffset (inclusive) and up to - the character at endOffset (exclusive), if startOffset is less or equal - endOffset. If endOffset is lower than startOffset, the result is the same - as a call with the two arguments being exchanged. - - The whole text can be requested by passing the indices zero and - IAccessibleText::nCharacters. If both indices have the same value, an empty - string is returned. - @param [in] startOffset - Index of the first character to include in the returned string. The valid range - is 0..length. - @param [in] endOffset - Index of the last character to exclude in the returned string. The valid range - is 0..length. - @param [out] text - Returns the substring starting with the character at startOffset (inclusive) - and up to the character at endOffset (exclusive), if startOffset is less than - or equal to endOffset. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note - @li The returned string may be longer than endOffset-startOffset bytes if text - contains multi-byte characters. - @li Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - */ - [propget] HRESULT text - ( - [in] long startOffset, - [in] long endOffset, - [out, retval] BSTR *text - ); - - /** @brief Returns a text portion before the given position. - - Returns the substring of the specified text type that is located before the - given character and does not include it. The result of this method should be - same as a result for IAccessibleText::textAtOffset with a suitably decreased - index value. - - For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete - word that is closest to and located before offset is returned. - - If the index is valid, but no suitable word (or other boundary type) is found, a - NULL pointer is returned. - - @param [in] offset - Index of the character for which to return the text part before it. The index - character will not be part of the returned string. The valid range is 0..length. - Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - @param [in] boundaryType - The type of the text portion to return. See ::IA2TextBoundaryType for the - complete list. - @param [out] startOffset - 0 based offset of first character. - @param [out] endOffset - 0 based offset of one past the last character. - @param [out] text - Returns the requested text portion. This portion may be empty or invalid when - no appropriate text portion is found or text type is invalid. - @retval S_OK - @retval S_FALSE if the requested boundary type is not implemented, such as - ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; - [out] values are 0s and NULL respectively - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT textBeforeOffset - ( - [in] long offset, - [in] enum IA2TextBoundaryType boundaryType, - [out] long *startOffset, - [out] long *endOffset, - [out, retval] BSTR *text - ); - - /** @brief Returns a text portion after the given position. - - Returns the substring of the specified text type that is located after the - given character and does not include it. The result of this method should be - same as a result for IAccessibleText::textAtOffset with a suitably increased - index value. - - For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete - word that is closest to and located after offset is returned. - - If the index is valid, but no suitable word (or other text type) is found, a - NULL pointer is returned. - - @param [in] offset - Index of the character for which to return the text part after it. The index - character will not be part of the returned string. The valid range is 0..length. - Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - @param [in] boundaryType - The type of the text portion to return. See ::IA2TextBoundaryType for the complete - list. - @param [out] startOffset - 0 based offset of first character. - @param [out] endOffset - 0 based offset of one past the last character. - @param [out] text - Returns the requested text portion. This portion may be empty or invalid when - no appropriate text portion is found or text type is invalid. - @retval S_OK - @retval S_FALSE if the requested boundary type is not implemented, such as - ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; - [out] values are 0s and NULL respectively - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT textAfterOffset - ( - [in] long offset, - [in] enum IA2TextBoundaryType boundaryType, - [out] long *startOffset, - [out] long *endOffset, - [out, retval] BSTR *text - ); - - /** @brief Returns a text portion that spans the given position. - - Returns the substring of the specified text type at the specified offset. - - If the index is valid, but no suitable word (or other text type) is found, a - NULL pointer is returned. - - @param [in] offset - Index of the character for which to return the text part before it. The index - character will not be part of the returned string. The valid range is 0..length. - Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - @param [in] boundaryType - The type of the text portion to return. See ::IA2TextBoundaryType for the complete - list. - @param [out] startOffset - 0 based offset of first character. - @param [out] endOffset - 0 based offset of one past the last character. - @param [out] text - Returns the requested text portion. This portion may be empty or invalid when - no appropriate text portion is found or text type is invalid. - @retval S_OK - @retval S_FALSE if the requested boundary type is not implemented, such as - ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; - [out] values are 0s and NULL respectively - @retval E_INVALIDARG if bad [in] passed - */ - [propget] HRESULT textAtOffset - ( - [in] long offset, - [in] enum IA2TextBoundaryType boundaryType, - [out] long *startOffset, - [out] long *endOffset, - [out, retval] BSTR *text - ); - - /** @brief Unselects a range of text. - @param [in] selectionIndex - Index of selection to remove (0 based). - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT removeSelection - ( - [in] long selectionIndex - ); - - /** @brief Sets the position of the caret. - - The caret position/offset is that of the character logically following it, - e.g. to the right of it in a left to right language. - - Setting the caret position may or may not alter the current selection. A - change of the selection is notified to the accessibility event listeners with - an ::IA2_EVENT_TEXT_SELECTION_CHANGED event. - - When the new caret position differs from the old one (which, of course, is the - standard case) this is notified to the accessibility event listeners with an - ::IA2_EVENT_TEXT_CARET_MOVED event. - @param [in] offset - The new index of the caret. This caret is actually placed to the left side of - the character with that index. An index of 0 places the caret so that the next - insertion goes before the first character. An index of IAccessibleText::nCharacters - leads to insertion after the last character. Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - @retval S_OK - @retval E_FAIL if the caret cannot be set - @retval E_INVALIDARG if bad [in] passed - */ - HRESULT setCaretOffset - ( - [in] long offset - ); - - /** @brief Changes the bounds of an existing selection. - @param [in] selectionIndex - Index of selection to change (0 based) - @param [in] startOffset - New starting offset (0 based) - @param [in] endOffset - New ending offset (0 based) - the offset of the character just past the last character of the selection. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - */ - HRESULT setSelection - ( - [in] long selectionIndex, - [in] long startOffset, - [in] long endOffset - ); - - /** @brief Returns total number of characters. - - Note that this may be different than the total number of bytes required to store the - text, if the text contains multi-byte characters. - @param [out] nCharacters - @retval S_OK - */ - [propget] HRESULT nCharacters - ( - [out, retval] long *nCharacters - ); - - /** @brief Makes a specific part of string visible on screen. - @param [in] startIndex - 0 based character offset. - @param [in] endIndex - 0 based character offset - the offset of the character just past the last character of the string. - @param [in] scrollType - Defines where the object should be placed on the screen. - @retval S_OK - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - */ - HRESULT scrollSubstringTo - ( - [in] long startIndex, - [in] long endIndex, - [in] enum IA2ScrollType scrollType - ); - - /** @brief Moves the top left of a substring to a specified location. - - @param [in] startIndex - 0 based character offset. - @param [in] endIndex - 0 based character offset - the offset of the character just past the last character of the string. - @param [in] coordinateType - Specifies whether the coordinates are relative to the screen or the parent object. - @param [in] x - Defines the x coordinate. - @param [in] y - Defines the y coordinate. - @retval S_OK - @retval S_FALSE if the object is already at the specified location. - @retval E_INVALIDARG if bad [in] passed - @note Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for information about special offsets that can be used in %IAccessibleText methods. - */ - HRESULT scrollSubstringToPoint - ( - [in] long startIndex, - [in] long endIndex, - [in] enum IA2CoordinateType coordinateType, - [in] long x, - [in] long y - ); - - /** @brief Returns any inserted text. - - Provided for use by the ::IA2_EVENT_TEXT_INSERTED and ::IA2_EVENT_TEXT_UPDATED - event handlers. - - This data is only guaranteed to be valid while the thread notifying the event - continues. Once the handler has returned, the validity of the data depends on - how the server manages the life cycle of its objects. Also, note that the server - may have different life cycle management strategies for controls depending on - whether or not a control manages its children. Lists, trees, and tables can have - a large number of children and thus it's possible that the child objects for those - controls would only be created as needed. Servers should document their life cycle - strategy as this will be of interest to assistive technology or script engines - accessing data out of process or from other threads. Servers only need to save the - last inserted block of text and a scope of the entire application is adequate. - - @param [out] newText - The text that was just inserted. - @retval S_OK - @retval S_FALSE If there is nothing to return, the values of IA2TextSegment - struct are set as follows: text = NULL, start = 0, end = 0. - - */ - [propget] HRESULT newText - ( - [out, retval] IA2TextSegment *newText - ); - - /** @brief Returns any removed text. - - Provided for use by the IA2_EVENT_TEXT_REMOVED/UPDATED event handlers. - - This data is only guaranteed to be valid while the thread notifying the event - continues. Once the handler has returned, the validity of the data depends on - how the server manages the life cycle of its objects. Also, note that the server - may have different life cycle management strategies for controls depending on - whether or not a control manages its children. Lists, trees, and tables can have - a large number of children and thus it's possible that the child objects for those - controls would only be created as needed. Servers should document their life cycle - strategy as this will be of interest to assistive technology or script engines - accessing data out of process or from other threads. Servers only need to save the - last removed block of text and a scope of the entire application is adequate. - - @param [out] oldText - The text that was just removed. - @retval S_OK - @retval S_FALSE If there is nothing to return, the values of IA2TextSegment - struct are set as follows: text = NULL, start = 0, end = 0. - */ - [propget] HRESULT oldText - ( - [out, retval] IA2TextSegment *oldText - ); - -} diff --git a/src/3rdparty/iaccessible2/idl/AccessibleValue.idl b/src/3rdparty/iaccessible2/idl/AccessibleValue.idl deleted file mode 100644 index cd013d76f8..0000000000 --- a/src/3rdparty/iaccessible2/idl/AccessibleValue.idl +++ /dev/null @@ -1,136 +0,0 @@ -/************************************************************************* - * - * File Name (AccessibleValue.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -import "objidl.idl"; -import "oaidl.idl"; -import "oleacc.idl"; - -/** @brief This interface gives access to a single numerical value. - - The %IAccessibleValue interface represents a single numerical value and should - be implemented by any class that supports numerical value like progress bars - and spin boxes. This interface lets you access the value and its upper and - lower bounds. -*/ -[object, uuid(35855B5B-C566-4fd0-A7B1-E65465600394)] -interface IAccessibleValue : IUnknown -{ - - /** @brief Returns the value of this object as a number. - - The exact return type is implementation dependent. Typical types are long and - double. - @param [out] currentValue - Returns the current value represented by this object. See the section about - @ref _variants "VARIANTs" for additional information. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY - */ - [propget] HRESULT currentValue - ( - [out, retval] VARIANT *currentValue - ); - - /** @brief Sets the value of this object to the given number. - - The argument is clipped to the valid interval whose upper and lower - bounds are returned by the methods IAccessibleValue::maximumValue and - IAccessibleValue::minimumValue, i.e. if it is lower than the minimum - value the new value will be the minimum and if it is greater than the - maximum then the new value will be the maximum. - - @param [in] value - The new value represented by this object. The set of admissible types for - this argument is implementation dependent. - @retval S_OK - */ - HRESULT setCurrentValue - ( - [in] VARIANT value - ); - - /** @brief Returns the maximal value that can be represented by this object. - - The type of the returned value is implementation dependent. It does not have - to be the same type as that returned by method IAccessibleValue::currentValue. - - @param [out] maximumValue - Returns the maximal value in an implementation dependent type. If this object - has no upper bound then an empty object is returned. See the section about - @ref _variants "VARIANTs" for additional information. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY - */ - [propget] HRESULT maximumValue - ( - [out, retval] VARIANT *maximumValue - ); - - /** @brief Returns the minimal value that can be represented by this object. - - The type of the returned value is implementation dependent. It does not have - to be the same type as that returned by method IAccessibleValue::currentValue. - - @param [out] minimumValue - Returns the minimal value in an implementation dependent type. If this object - has no lower bound then an empty object is returned. See the section about - @ref _variants "VARIANTs" for additional information. - @retval S_OK - @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY - */ - [propget] HRESULT minimumValue - ( - [out, retval] VARIANT *minimumValue - ); - -}; diff --git a/src/3rdparty/iaccessible2/idl/IA2CommonTypes.idl b/src/3rdparty/iaccessible2/idl/IA2CommonTypes.idl deleted file mode 100644 index d3da110873..0000000000 --- a/src/3rdparty/iaccessible2/idl/IA2CommonTypes.idl +++ /dev/null @@ -1,191 +0,0 @@ -/************************************************************************* - * - * File Name (IA2CommonTypes.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - - /** These constants control the scrolling of an object or substring into a window. - - This enum is used in IAccessible2::scrollTo and IAccessibleText::scrollSubstringTo. -*/ -enum IA2ScrollType { - - /** Scroll the top left corner of the object or substring such that the top left - corner (and as much as possible of the rest of the object or substring) is within - the top level window. In cases where the entire object or substring fits within - the top level window, the placement of the object or substring is dependent on - the application. For example, the object or substring may be scrolled to the - closest edge, the furthest edge, or midway between those two edges. In cases - where there is a hierarchy of nested scrollable controls, more than one control - may have to be scrolled. - */ - IA2_SCROLL_TYPE_TOP_LEFT, - - /** Scroll the bottom right corner of the object or substring such that the bottom right - corner (and as much as possible of the rest of the object or substring) is within - the top level window. In cases where the entire object or substring fits within - the top level window, the placement of the object or substring is dependent on - the application. For example, the object or substring may be scrolled to the - closest edge, the furthest edge, or midway between those two edges. In cases - where there is a hierarchy of nested scrollable controls, more than one control - may have to be scrolled. - */ - IA2_SCROLL_TYPE_BOTTOM_RIGHT, - - /** Scroll the top edge of the object or substring such that the top edge - (and as much as possible of the rest of the object or substring) is within the - top level window. In cases where the entire object or substring fits within - the top level window, the placement of the object or substring is dependent on - the application. For example, the object or substring may be scrolled to the - closest edge, the furthest edge, or midway between those two edges. In cases - where there is a hierarchy of nested scrollable controls, more than one control - may have to be scrolled. - */ - IA2_SCROLL_TYPE_TOP_EDGE, - - /** Scroll the bottom edge of the object or substring such that the bottom edge - (and as much as possible of the rest of the object or substring) is within the - top level window. In cases where the entire object or substring fits within - the top level window, the placement of the object or substring is dependent on - the application. For example, the object or substring may be scrolled to the - closest edge, the furthest edge, or midway between those two edges. In cases - where there is a hierarchy of nested scrollable controls, more than one control - may have to be scrolled. - */ - IA2_SCROLL_TYPE_BOTTOM_EDGE, - - /** Scroll the left edge of the object or substring such that the left edge - (and as much as possible of the rest of the object or substring) is within the - top level window. In cases where the entire object or substring fits within - the top level window, the placement of the object or substring is dependent on - the application. For example, the object or substring may be scrolled to the - closest edge, the furthest edge, or midway between those two edges. In cases - where there is a hierarchy of nested scrollable controls, more than one control - may have to be scrolled. - */ - IA2_SCROLL_TYPE_LEFT_EDGE, - - /** Scroll the right edge of the object or substring such that the right edge - (and as much as possible of the rest of the object or substring) is within the - top level window. In cases where the entire object or substring fits within - the top level window, the placement of the object or substring is dependent on - the application. For example, the object or substring may be scrolled to the - closest edge, the furthest edge, or midway between those two edges. In cases - where there is a hierarchy of nested scrollable controls, more than one control - may have to be scrolled. - */ - IA2_SCROLL_TYPE_RIGHT_EDGE, - - /** Scroll the object or substring such that as much as possible of the - object or substring is within the top level window. The placement of - the object is dependent on the application. For example, the object or - substring may be scrolled to to closest edge, the furthest edge, or midway - between those two edges. - */ - IA2_SCROLL_TYPE_ANYWHERE -}; - -/** These constants define which coordinate system a point is located in. - - This enum is used in IAccessible2::scrollToPoint, IAccessibleImage::imagePosition, - IAccessibleText::characterExtents, and IAccessibleText::offsetAtPoint, and - IAccessibleText::scrollSubstringToPoint. -*/ -enum IA2CoordinateType { - - /// The coordinates are relative to the screen. - IA2_COORDTYPE_SCREEN_RELATIVE, - - /** The coordinates are relative to the upper left corner of the bounding box - of the immediate parent. - */ - IA2_COORDTYPE_PARENT_RELATIVE - -}; - -/** Special offsets for use in IAccessibleText and IAccessibleEditableText methods - - Refer to @ref _specialOffsets - "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" - for more information. -*/ -enum IA2TextSpecialOffsets { - IA2_TEXT_OFFSET_LENGTH = -1, /**< This offset is equivalent to the length of the string. It eliminates - the need to call IAccessibleText::nCharacters. */ - IA2_TEXT_OFFSET_CARET = -2 /**< This offset signifies that the text related to the physical location - of the caret should be used. */ -}; - -/** These constants specify the kind of change made to a table. - - This enum is used in the IA2TableModelChange struct which in turn is used by - IAccessibleTable::modelChange and IAccessibleTable2::modelChange. -*/ -enum IA2TableModelChangeType { - IA2_TABLE_MODEL_CHANGE_INSERT, // = 0; - IA2_TABLE_MODEL_CHANGE_DELETE, - IA2_TABLE_MODEL_CHANGE_UPDATE -}; - -/** A structure defining the type of and extents of changes made to a table - - IAccessibleTable::modelChange and IAccessibleTable2::modelChange return this struct. - In the case of an insertion or change the row and column offsets define the boundaries - of the inserted or changed subtable after the operation. In the case of a deletion - the row and column offsets define the boundaries of the subtable being removed before - the removal. -*/ -typedef struct IA2TableModelChange { - enum IA2TableModelChangeType type; // insert, delete, update - long firstRow; ///< 0 based, inclusive - long lastRow; ///< 0 based, inclusive - long firstColumn; ///< 0 based, inclusive - long lastColumn; ///< 0 based, inclusive -} IA2TableModelChange; diff --git a/src/3rdparty/iaccessible2/idl/IA2TypeLibrary.idl b/src/3rdparty/iaccessible2/idl/IA2TypeLibrary.idl deleted file mode 100644 index 7753825751..0000000000 --- a/src/3rdparty/iaccessible2/idl/IA2TypeLibrary.idl +++ /dev/null @@ -1,94 +0,0 @@ -/************************************************************************* - * - * File Name (IA2TypeLibrary.idl) - * - * IAccessible2 IDL Specification - * - * Copyright (c) 2007, 2010 Linux Foundation - * Copyright (c) 2006 IBM Corporation - * Copyright (c) 2000, 2006 Sun Microsystems, Inc. - * All rights reserved. - * - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the Linux Foundation nor the names of its - * contributors may be used to endorse or promote products - * derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This BSD License conforms to the Open Source Initiative "Simplified - * BSD License" as published at: - * http://www.opensource.org/licenses/bsd-license.php - * - * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 - * mark may be used in accordance with the Linux Foundation Trademark - * Policy to indicate compliance with the IAccessible2 specification. - * - ************************************************************************/ - -// This is not a standalone file. It is to be appended to the end of the -// merged IDL file. - -cpp_quote("") -cpp_quote("// Type Library Definitions") -cpp_quote("") - -[ - uuid(c974e070-3787-490a-87b0-e333b06ca1e2), - helpstring("IAccessible2 Type Library"), - version(1.2), - hidden -] - -library IAccessible2Lib -{ - importlib ("stdole2.tlb"); - importlib ("oleacc.dll"); - interface IAccessible2; - interface IAccessibleAction; - interface IAccessibleApplication; - interface IAccessibleComponent; - interface IAccessibleEditableText; - interface IAccessibleHyperlink; - interface IAccessibleHypertext; - interface IAccessibleImage; - interface IAccessibleRelation; - interface IAccessibleTable; - interface IAccessibleTable2; - interface IAccessibleTableCell; - interface IAccessibleText; - interface IAccessibleValue; - enum IA2CoordinateType; - enum IA2EventID; - enum IA2Role; - enum IA2ScrollType; - enum IA2States; - enum IA2TableModelChangeType; - enum IA2TextBoundaryType; - enum IA2TextSpecialOffsets; -} diff --git a/src/3rdparty/iaccessible2/idl/Makefile b/src/3rdparty/iaccessible2/idl/Makefile index eb56d9fb60..e186b5ab54 100644 --- a/src/3rdparty/iaccessible2/idl/Makefile +++ b/src/3rdparty/iaccessible2/idl/Makefile @@ -11,48 +11,11 @@ MIDL_OPTS = /out ..\generated\x86 /env win32 x86: -del ..\generated\x86\dlldata.c -md ..\generated\x86 - $(MIDL) $(MIDL_OPTS) Accessible2.idl - $(MIDL) $(MIDL_OPTS) AccessibleAction.idl - $(MIDL) $(MIDL_OPTS) AccessibleApplication.idl - $(MIDL) $(MIDL_OPTS) AccessibleComponent.idl - $(MIDL) $(MIDL_OPTS) AccessibleEditableText.idl - $(MIDL) $(MIDL_OPTS) AccessibleEventID.idl - $(MIDL) $(MIDL_OPTS) AccessibleHyperlink.idl - $(MIDL) $(MIDL_OPTS) AccessibleHypertext.idl - $(MIDL) $(MIDL_OPTS) AccessibleImage.idl - $(MIDL) $(MIDL_OPTS) AccessibleRelation.idl - $(MIDL) $(MIDL_OPTS) AccessibleRole.idl - $(MIDL) $(MIDL_OPTS) AccessibleStates.idl - $(MIDL) $(MIDL_OPTS) AccessibleTable.idl - $(MIDL) $(MIDL_OPTS) AccessibleTable2.idl - $(MIDL) $(MIDL_OPTS) AccessibleTableCell.idl - $(MIDL) $(MIDL_OPTS) AccessibleText.idl - $(MIDL) $(MIDL_OPTS) AccessibleValue.idl - $(MIDL) $(MIDL_OPTS) IA2CommonTypes.idl - $(MIDL) $(MIDL_OPTS) IA2TypeLibrary.idl + $(MIDL) $(MIDL_OPTS) ia2_api_all.idl MIDL_OPTS = /out ..\generated\amd64 /env amd64 amd64: -del ..\generated\amd64\dlldata.c -md ..\generated\amd64 - $(MIDL) $(MIDL_OPTS) Accessible2.idl - $(MIDL) $(MIDL_OPTS) AccessibleAction.idl - $(MIDL) $(MIDL_OPTS) AccessibleApplication.idl - $(MIDL) $(MIDL_OPTS) AccessibleComponent.idl - $(MIDL) $(MIDL_OPTS) AccessibleEditableText.idl - $(MIDL) $(MIDL_OPTS) AccessibleEventID.idl - $(MIDL) $(MIDL_OPTS) AccessibleHyperlink.idl - $(MIDL) $(MIDL_OPTS) AccessibleHypertext.idl - $(MIDL) $(MIDL_OPTS) AccessibleImage.idl - $(MIDL) $(MIDL_OPTS) AccessibleRelation.idl - $(MIDL) $(MIDL_OPTS) AccessibleRole.idl - $(MIDL) $(MIDL_OPTS) AccessibleStates.idl - $(MIDL) $(MIDL_OPTS) AccessibleTable.idl - $(MIDL) $(MIDL_OPTS) AccessibleTable2.idl - $(MIDL) $(MIDL_OPTS) AccessibleTableCell.idl - $(MIDL) $(MIDL_OPTS) AccessibleText.idl - $(MIDL) $(MIDL_OPTS) AccessibleValue.idl - $(MIDL) $(MIDL_OPTS) IA2CommonTypes.idl - $(MIDL) $(MIDL_OPTS) IA2TypeLibrary.idl - + $(MIDL) $(MIDL_OPTS) ia2_api_all.idl diff --git a/src/3rdparty/iaccessible2/idl/README b/src/3rdparty/iaccessible2/idl/README index 0a299f16b4..7751447fd4 100644 --- a/src/3rdparty/iaccessible2/idl/README +++ b/src/3rdparty/iaccessible2/idl/README @@ -4,3 +4,6 @@ in this directory to generate the files from the idl files. The generated files will be put in ..\generated\x86 and ..\generated\amd64 +In order for it to work on msvc-2010 you need to use MIDL shipped with +that version +(Microsoft (R) 32b/64b MIDL Compiler Version 7.00.0555). diff --git a/src/3rdparty/iaccessible2/idl/ia2_api_all.idl b/src/3rdparty/iaccessible2/idl/ia2_api_all.idl new file mode 100644 index 0000000000..729ed2627d --- /dev/null +++ b/src/3rdparty/iaccessible2/idl/ia2_api_all.idl @@ -0,0 +1,5473 @@ +/************************************************************************* + * + * File Name (api_all_headers.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2013 Linux Foundation + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + +import "objidl.idl"; +import "oaidl.idl"; +import "oleacc.idl"; + +/************************************************************************* + * + * File Name (IA2CommonTypes.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + /** These constants control the scrolling of an object or substring into a window. + + This enum is used in IAccessible2::scrollTo and IAccessibleText::scrollSubstringTo. +*/ +enum IA2ScrollType { + + /** Scroll the top left corner of the object or substring such that the top left + corner (and as much as possible of the rest of the object or substring) is within + the top level window. In cases where the entire object or substring fits within + the top level window, the placement of the object or substring is dependent on + the application. For example, the object or substring may be scrolled to the + closest edge, the furthest edge, or midway between those two edges. In cases + where there is a hierarchy of nested scrollable controls, more than one control + may have to be scrolled. + */ + IA2_SCROLL_TYPE_TOP_LEFT, + + /** Scroll the bottom right corner of the object or substring such that the bottom right + corner (and as much as possible of the rest of the object or substring) is within + the top level window. In cases where the entire object or substring fits within + the top level window, the placement of the object or substring is dependent on + the application. For example, the object or substring may be scrolled to the + closest edge, the furthest edge, or midway between those two edges. In cases + where there is a hierarchy of nested scrollable controls, more than one control + may have to be scrolled. + */ + IA2_SCROLL_TYPE_BOTTOM_RIGHT, + + /** Scroll the top edge of the object or substring such that the top edge + (and as much as possible of the rest of the object or substring) is within the + top level window. In cases where the entire object or substring fits within + the top level window, the placement of the object or substring is dependent on + the application. For example, the object or substring may be scrolled to the + closest edge, the furthest edge, or midway between those two edges. In cases + where there is a hierarchy of nested scrollable controls, more than one control + may have to be scrolled. + */ + IA2_SCROLL_TYPE_TOP_EDGE, + + /** Scroll the bottom edge of the object or substring such that the bottom edge + (and as much as possible of the rest of the object or substring) is within the + top level window. In cases where the entire object or substring fits within + the top level window, the placement of the object or substring is dependent on + the application. For example, the object or substring may be scrolled to the + closest edge, the furthest edge, or midway between those two edges. In cases + where there is a hierarchy of nested scrollable controls, more than one control + may have to be scrolled. + */ + IA2_SCROLL_TYPE_BOTTOM_EDGE, + + /** Scroll the left edge of the object or substring such that the left edge + (and as much as possible of the rest of the object or substring) is within the + top level window. In cases where the entire object or substring fits within + the top level window, the placement of the object or substring is dependent on + the application. For example, the object or substring may be scrolled to the + closest edge, the furthest edge, or midway between those two edges. In cases + where there is a hierarchy of nested scrollable controls, more than one control + may have to be scrolled. + */ + IA2_SCROLL_TYPE_LEFT_EDGE, + + /** Scroll the right edge of the object or substring such that the right edge + (and as much as possible of the rest of the object or substring) is within the + top level window. In cases where the entire object or substring fits within + the top level window, the placement of the object or substring is dependent on + the application. For example, the object or substring may be scrolled to the + closest edge, the furthest edge, or midway between those two edges. In cases + where there is a hierarchy of nested scrollable controls, more than one control + may have to be scrolled. + */ + IA2_SCROLL_TYPE_RIGHT_EDGE, + + /** Scroll the object or substring such that as much as possible of the + object or substring is within the top level window. The placement of + the object is dependent on the application. For example, the object or + substring may be scrolled to to closest edge, the furthest edge, or midway + between those two edges. + */ + IA2_SCROLL_TYPE_ANYWHERE +}; + +/** These constants define which coordinate system a point is located in. + + This enum is used in IAccessible2::scrollToPoint, IAccessibleImage::imagePosition, + IAccessibleText::characterExtents, and IAccessibleText::offsetAtPoint, and + IAccessibleText::scrollSubstringToPoint. +*/ +enum IA2CoordinateType { + + /// The coordinates are relative to the screen. + IA2_COORDTYPE_SCREEN_RELATIVE, + + /** The coordinates are relative to the upper left corner of the bounding box + of the immediate parent. + */ + IA2_COORDTYPE_PARENT_RELATIVE + +}; + +/** Special offsets for use in IAccessibleText and IAccessibleEditableText methods + + Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for more information. +*/ +enum IA2TextSpecialOffsets { + IA2_TEXT_OFFSET_LENGTH = -1, /**< This offset is equivalent to the length of the string. It eliminates + the need to call IAccessibleText::nCharacters. */ + IA2_TEXT_OFFSET_CARET = -2 /**< This offset signifies that the text related to the physical location + of the caret should be used. */ +}; + +/** These constants specify the kind of change made to a table. + + This enum is used in the IA2TableModelChange struct which in turn is used by + IAccessibleTable::modelChange and IAccessibleTable2::modelChange. +*/ +enum IA2TableModelChangeType { + IA2_TABLE_MODEL_CHANGE_INSERT, // = 0; + IA2_TABLE_MODEL_CHANGE_DELETE, + IA2_TABLE_MODEL_CHANGE_UPDATE +}; + +/** A structure defining the type of and extents of changes made to a table + + IAccessibleTable::modelChange and IAccessibleTable2::modelChange return this struct. + In the case of an insertion or change the row and column offsets define the boundaries + of the inserted or changed subtable after the operation. In the case of a deletion + the row and column offsets define the boundaries of the subtable being removed before + the removal. +*/ +typedef struct IA2TableModelChange { + enum IA2TableModelChangeType type; // insert, delete, update + long firstRow; ///< 0 based, inclusive + long lastRow; ///< 0 based, inclusive + long firstColumn; ///< 0 based, inclusive + long lastColumn; ///< 0 based, inclusive +} IA2TableModelChange; +/************************************************************************* + * + * File Name (AccessibleRelation.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + +/** @defgroup grpRelations Relations + Use the following constants to compare against the BSTRs returned by + IAccessibleRelation::relationType. +*/ +///@{ + +/** The target object is the containing application object. */ +const WCHAR *const IA2_RELATION_CONTAINING_APPLICATION = L"containingApplication"; + +/** The target object is the containing document object. The target object implements + the IAccessibleDocument interface. +*/ +const WCHAR *const IA2_RELATION_CONTAINING_DOCUMENT = L"containingDocument"; + +/** The target object is the containing tab pane object. */ +const WCHAR *const IA2_RELATION_CONTAINING_TAB_PANE = L"containingTabPane"; + +/** The target object is the containing window object. */ +const WCHAR *const IA2_RELATION_CONTAINING_WINDOW = L"containingWindow"; + +/** Some attribute of this object is affected by a target object. */ +const WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy"; + +/** This object is interactive and controls some attribute of a target object. */ +const WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor"; + +/** This object is described by the target object. */ +const WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy"; + +/** This object is describes the target object. */ +const WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor"; + +/** This object is embedded by a target object. */ +const WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy"; + +/** This object embeds a target object. This relation can be used on the + OBJID_CLIENT accessible for a top level window to show where the content + areas are. +*/ +const WCHAR *const IA2_RELATION_EMBEDS = L"embeds"; + +/** Content flows to this object from a target object. + This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text + objects together in order to allow assistive technology to follow the + intended reading order. +*/ +const WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom"; + +/** Content flows from this object to a target object. */ +const WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo"; + +/** This object is label for a target object. */ +const WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor"; + +/** This object is labelled by a target object. Note that the double L spelling + which follows is preferred. Please use it instead. This single L version may + be removed in a later version. +*/ +const WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy"; + +/** This object is labelled by a target object. */ +const WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy"; + +/** This object is a member of a group of one or more objects. When + there is more than one object in the group each member may have one and the + same target, e.g. a grouping object. It is also possible that each member has + multiple additional targets, e.g. one for every other member in the group. +*/ +const WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf"; + +/** The target object is the next object in the tab order. */ +const WCHAR *const IA2_RELATION_NEXT_TABBABLE = L"nextTabbable"; + +/** This object is a logical child of a target object. This relation is the reciprocal + of the IA2_RELATION_NODE_PARENT_OF relation. In some cases an application's accessible + tree is such that objects can be in a logical parent-child relationship which is + different from the hierarchy of the accessible tree. */ +const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf"; + +/** This object is a logical parent of a target object. This relation is the reciprocal + of the IA2_RELATION_NODE_CHILD_OF relation. In some cases an application's accessible + tree is such that objects can be in a logical parent-child relationship which is + different from the hierarchy of the accessible tree. */ +const WCHAR *const IA2_RELATION_NODE_PARENT_OF = L"nodeParentOf"; + +/** This object is a parent window of the target object. */ +const WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf"; + +/** This object is a transient component related to the target object. + When this object is activated the target object doesn't lose focus. +*/ +const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor"; + +/** The target object is the previous object in the tab order. */ +const WCHAR *const IA2_RELATION_PREVIOUS_TABBABLE = L"previousTabbable"; + +/** This object is a sub window of a target object. */ +const WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf"; + +///@} + +/** This interface gives access to an object's set of relations. +*/ +[object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)] +interface IAccessibleRelation : IUnknown +{ + /** @brief Returns the type of the relation. + @param [out] relationType + The strings returned are defined @ref grpRelations "in this section of the documentation". + @retval S_OK + */ + [propget] HRESULT relationType + ( + [out, retval] BSTR *relationType + ); + + /** @brief Returns a localized version of the relation type. + @param [out] localizedRelationType + @retval S_OK + */ + [propget] HRESULT localizedRelationType + ( + [out, retval] BSTR *localizedRelationType + ); + + /** @brief Returns the number of targets for this relation. + @param [out] nTargets + @retval S_OK + */ + [propget] HRESULT nTargets + ( + [out, retval] long *nTargets + ); + + /** @brief Returns one accessible relation target. + @param [in] targetIndex + 0 based index + @param [out] target + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Use QueryInterface to get IAccessible2. + */ + [propget] HRESULT target + ( + [in] long targetIndex, + [out, retval] IUnknown **target + ); + + /** @brief Returns multiple accessible relation targets + @param [in] maxTargets + maximum size of the array allocated by the client + @param [out] targets + The array of target objects. Note that this array is to be allocated by the + client and freed when no longer needed. Refer to @ref _arrayConsideration + "Special Consideration when using Arrays" for more details. You will need to use + QueryInterface on the IUnknown to get the IAccessible2. + @param [out] nTargets + actual number of targets in the returned array (not more than maxTargets) + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, e.g. a negative value + */ + [propget] HRESULT targets + ( + [in] long maxTargets, + [out, size_is(maxTargets), length_is(*nTargets)] + IUnknown **targets, + [out, retval] long *nTargets + ); + +} +/************************************************************************* + * + * File Name (AccessibleAction.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + +/** This enum defines values which are predefined actions for use when implementing + support for media. + + This enum is used when specifying an action for IAccessibleAction::doAction. +*/ + +enum IA2Actions { + IA2_ACTION_OPEN = -1, /**< Used to inform the server that the client will + signal via IA2_ACTION_COMPLETE when it has consumed + the content provided by the object. This action + allows the object's server to wait for all clients + to signal their readiness for additional content. + Any form of content generation that requires + synchronization with an AT would require use of this + action. One example is the generation of text describing + visual content not obvious from a video's sound track. + In this scenario the Text to Speech or Braille output + may take more time than the related length of silence + in the video's sound track. */ + IA2_ACTION_COMPLETE = -2, /**< Used by the client to inform the server that it has + consumed the most recent content provided by this object. */ + IA2_ACTION_CLOSE = -3 /**< Used to inform the server that the client no longer + requires synchronization. */ +}; + +/** @brief This interface gives access to actions that can be executed + for accessible objects. + + Every accessible object that can be manipulated via the native GUI beyond the + methods available either in the MSAA IAccessible interface or in the set of + IAccessible2 interfaces (other than this IAccessibleAction interface) should + support the IAccessibleAction interface in order to provide Assistive Technology + access to all the actions that can be performed by the object. Each action can + be performed or queried for a name, description or associated key bindings. + Actions are needed more for ATs that assist the mobility impaired, such as + on-screen keyboards and voice command software. By providing actions directly, + the AT can present them to the user without the user having to perform the extra + steps to navigate a context menu. + + The first action should be equivalent to the MSAA default action. If there is + only one action, %IAccessibleAction should also be implemented. +*/ +[object, uuid(B70D9F59-3B5A-4dba-AB9E-22012F607DF5)] +interface IAccessibleAction : IUnknown +{ + + /** @brief Returns the number of accessible actions available in this object. + + If there are more than one, the first one is considered the + "default" action of the object. + @param [out] nActions + The returned value of the number of actions is zero if there are + no actions. + @retval S_OK + @note This method is missing a [propget] prefix in the IDL. The result is the + method is named nActions in generated C++ code instead of get_nActions. + */ + HRESULT nActions + ( + [out,retval] long* nActions + ); + + /** @brief Performs the specified Action on the object. + @param [in] actionIndex + 0 based index specifying the action to perform. If it lies outside + the valid range no action is performed. + @retval S_OK + @retval S_FALSE if action could not be performed + @retval E_INVALIDARG if bad [in] passed + @note If implementing support for media, refer to the predefined constants in the ::IA2Actions enum. + */ + HRESULT doAction + ( + [in] long actionIndex + ); + + /** @brief Returns a description of the specified action of the object. + @param [in] actionIndex + 0 based index specifying which action's description to return. + If it lies outside the valid range an empty string is returned. + @param [out] description + The returned value is a localized string of the specified action. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT description + ( + [in] long actionIndex, + [out, retval] BSTR *description + ); + + /** @brief Returns an array of BSTRs describing one or more key bindings, if + there are any, associated with the specified action. + + The returned strings are the localized human readable key sequences to be + used to activate each action, e.g. "Ctrl+Shift+D". Since these key + sequences are to be used when the object has focus, they are like + mnemonics (access keys), and not like shortcut (accelerator) keys. + + There is no need to implement this method for single action controls since + that would be redundant with the standard MSAA programming practice of + getting the mnemonic from get_accKeyboardShortcut. + + An AT such as an On Screen Keyboard might not expose these bindings but + provide alternative means of activation. + + Note: the client allocates and passes in an array of pointers. The server + allocates the BSTRs and passes back one or more pointers to these BSTRs into + the array of pointers allocated by the client. The client is responsible + for deallocating the BSTRs. + + @param [in] actionIndex + 0 based index specifying which action's key bindings should be returned. + @param [in] nMaxBindings + This parameter is ignored. Refer to @ref _arrayConsideration + "Special Consideration when using Arrays" for more details. + @param [out] keyBindings + An array of BSTRs, allocated by the server, one for each key binding. + The client must free it with CoTaskMemFree. + @param [out] nBindings + The number of key bindings returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are no key bindings, [out] values are NULL and 0 respectively + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT keyBinding + ( + [in] long actionIndex, + [in] long nMaxBindings, + [out, size_is(,nMaxBindings), length_is(,*nBindings)] BSTR **keyBindings, + [out, retval] long *nBindings + ); + + /** @brief Returns the non-localized name of specified action. + @param [in] actionIndex + 0 based index specifying which action's non-localized name should be returned. + @param [out] name + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT name + ( + [in] long actionIndex, + [out, retval] BSTR *name + ); + + /** @brief Returns the localized name of specified action. + @param [in] actionIndex + 0 based index specifying which action's localized name should be returned. + @param [out] localizedName + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT localizedName + ( + [in] long actionIndex, + [out, retval] BSTR *localizedName + ); + +} +/************************************************************************* + * + * File Name (AccessibleRole.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + +/** Collection of roles + + This enumerator defines an extended set of accessible roles of objects implementing + the %IAccessible2 interface. These roles are in addition to the MSAA roles obtained + through the MSAA get_accRole method. Examples are 'footnote', 'heading', and + 'label'. You obtain an object's %IAccessible2 roles by calling IAccessible2::role. +*/ +enum IA2Role { + + /** Unknown role. The object contains some Accessible information, but its + role is not known. + */ + IA2_ROLE_UNKNOWN = 0, + + /** An object that can be drawn into and to manage events from the objects + drawn into it. Also refer to ::IA2_ROLE_FRAME, + ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE. + */ + IA2_ROLE_CANVAS = 0x401, + + /// A caption describing another object. + IA2_ROLE_CAPTION, + + /// Used for check buttons that are menu items. + IA2_ROLE_CHECK_MENU_ITEM, + + /// A specialized dialog that lets the user choose a color. + IA2_ROLE_COLOR_CHOOSER, + + /// A date editor. + IA2_ROLE_DATE_EDITOR, + + /** An iconified internal frame in an ::IA2_ROLE_DESKTOP_PANE. + Also refer to ::IA2_ROLE_INTERNAL_FRAME. + */ + IA2_ROLE_DESKTOP_ICON, + + /** A desktop pane. A pane that supports internal frames and iconified + versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME. + */ + IA2_ROLE_DESKTOP_PANE, + + /** A directory pane. A pane that allows the user to navigate through + and select the contents of a directory. May be used by a file chooser. + Also refer to ::IA2_ROLE_FILE_CHOOSER. + */ + IA2_ROLE_DIRECTORY_PANE, + + /** An editable text object in a toolbar. <b>Deprecated.</b> + The edit bar role was meant for a text area in a tool bar. However, to detect + a text area in a tool bar the AT can query the parent. + */ + IA2_ROLE_EDITBAR, + + /// Embedded (OLE) object. + IA2_ROLE_EMBEDDED_OBJECT, + + /// Text that is used as an endnote (footnote at the end of a chapter or section). + IA2_ROLE_ENDNOTE, + + /** A file chooser. A specialized dialog that displays the files in the + directory and lets the user select a file, browse a different directory, + or specify a filename. May use the directory pane to show the contents of + a directory. + Also refer to ::IA2_ROLE_DIRECTORY_PANE. + */ + IA2_ROLE_FILE_CHOOSER, + + /** A font chooser. A font chooser is a component that lets the user pick + various attributes for fonts. + */ + IA2_ROLE_FONT_CHOOSER, + + /** Footer of a document page. + Also refer to ::IA2_ROLE_HEADER. + */ + IA2_ROLE_FOOTER, + + /// Text that is used as a footnote. Also refer to ::IA2_ROLE_ENDNOTE. + IA2_ROLE_FOOTNOTE, + + /** A container of form controls. An example of the use of this role is to + represent an HTML FORM tag. + */ + IA2_ROLE_FORM, + + /** Frame role. A top level window with a title bar, border, menu bar, etc. + It is often used as the primary window for an application. Also refer to + ::IA2_ROLE_CANVAS and the MSAA roles of dialog and window. + */ + IA2_ROLE_FRAME, + + /** A glass pane. A pane that is guaranteed to be painted on top of all panes + beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and + ::IA2_ROLE_ROOT_PANE. + */ + IA2_ROLE_GLASS_PANE, + + /** Header of a document page. + Also refer to ::IA2_ROLE_FOOTER. + */ + IA2_ROLE_HEADER, + + /// Heading. Use the IAccessible2::attributes level attribute to determine the heading level. + IA2_ROLE_HEADING, + + /// A small fixed size picture, typically used to decorate components. + IA2_ROLE_ICON, + + /** An image map object. Usually a graphic with multiple hotspots, where + each hotspot can be activated resulting in the loading of another document + or section of a document. + */ + IA2_ROLE_IMAGE_MAP, + + /** An object which is used to allow input of characters not found on a keyboard, + such as the input of Chinese characters on a Western keyboard. + */ + IA2_ROLE_INPUT_METHOD_WINDOW, + + /** An internal frame. A frame-like object that is clipped by a desktop pane. + The desktop pane, internal frame, and desktop icon objects are often used to + create multiple document interfaces within an application. + Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME. + */ + IA2_ROLE_INTERNAL_FRAME, + + /// An object used to present an icon or short string in an interface. + IA2_ROLE_LABEL, + + /** A layered pane. A specialized pane that allows its children to be drawn + in layers, providing a form of stacking order. This is usually the pane that + holds the menu bar as well as the pane that contains most of the visual + components in a window. + Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE. + */ + IA2_ROLE_LAYERED_PANE, + + /** A section whose content is parenthetic or ancillary to the main content + of the resource. + */ + IA2_ROLE_NOTE, + + /** A specialized pane whose primary use is inside a dialog. + Also refer to MSAA's dialog role. + */ + IA2_ROLE_OPTION_PANE, + + /** An object representing a page of document content. It is used in documents + which are accessed by the user on a page by page basis. + */ + IA2_ROLE_PAGE, + + /// A paragraph of text. + IA2_ROLE_PARAGRAPH, + + /** A radio button that is a menu item. + Also refer to MSAA's button and menu item roles. + */ + IA2_ROLE_RADIO_MENU_ITEM, + + /** An object which is redundant with another object in the accessible hierarchy. + ATs typically ignore objects with this role. + */ + IA2_ROLE_REDUNDANT_OBJECT, + + /** A root pane. A specialized pane that has a glass pane and a layered pane + as its children. + Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_LAYERED_PANE + */ + IA2_ROLE_ROOT_PANE, + + /** A ruler such as those used in word processors. + */ + IA2_ROLE_RULER, + + /** A scroll pane. An object that allows a user to incrementally view a large + amount of information. Its children can include scroll bars and a viewport. + Also refer to ::IA2_ROLE_VIEW_PORT and MSAA's scroll bar role. + */ + IA2_ROLE_SCROLL_PANE, + + /** A container of document content. An example of the use of this role is to + represent an HTML DIV tag. A section may be used as a region. A region is a + group of elements that together form a perceivable unit. A region does not + necessarily follow the logical structure of the content, but follows the + perceivable structure of the page. A region may have an attribute in the set + of IAccessible2::attributes which indicates that it is "live". A live region + is content that is likely to change in response to a timed change, a user + event, or some other programmed logic or event. + */ + IA2_ROLE_SECTION, + + /// Object with graphical representation used to represent content on draw pages. + IA2_ROLE_SHAPE, + + /** A split pane. A specialized panel that presents two other panels at the + same time. Between the two panels is a divider the user can manipulate to make + one panel larger and the other panel smaller. + */ + IA2_ROLE_SPLIT_PANE, + + /** An object that forms part of a menu system but which can be "undocked" + from or "torn off" the menu system to exist as a separate window. + */ + IA2_ROLE_TEAR_OFF_MENU, + + /// An object used as a terminal emulator. + IA2_ROLE_TERMINAL, + + /// Collection of objects that constitute a logical text entity. + IA2_ROLE_TEXT_FRAME, + + /** A toggle button. A specialized push button that can be checked or unchecked, + but does not provide a separate indicator for the current state. + Also refer to MSAA's roles of push button, check box, and radio button. + <BR><B>Note:</B> IA2_ROLE_TOGGLE_BUTTON should not be used. Instead, use MSAA's + ROLE_SYSTEM_PUSHBUTTON and STATE_SYSTEM_PRESSED. + */ + IA2_ROLE_TOGGLE_BUTTON, + + /** A viewport. An object usually used in a scroll pane. It represents the + portion of the entire data that the user can see. As the user manipulates + the scroll bars, the contents of the viewport can change. + Also refer to ::IA2_ROLE_SCROLL_PANE. + */ + IA2_ROLE_VIEW_PORT, + + /** An object containing content which is complementary to the main content of + a document, but remains meaningful when separated from the main content. There + are various types of content that would appropriately have this role. For example, + in the case where content is delivered via a web portal to a web browser, this may + include but not be limited to show times, current weather, related articles, or + stocks to watch. The complementary role indicates that contained content is relevant + to the main content. If the complementary content is completely separable main + content, it may be appropriate to use a more general role. + */ + IA2_ROLE_COMPLEMENTARY_CONTENT + +}; +/************************************************************************* + * + * File Name (AccessibleStates.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + +typedef long AccessibleStates; + +/** %IAccessible2 specific state bit constants + + This enum defines the state bits returned by IAccessible2::states. The + %IAccessible2 state bits are in addition to those returned by MSAA. +*/ +enum IA2States { + +/** Indicates a window is currently the active window, or is an active subelement + within a container or table. + + This state can be used to indicate the current active item in a container, even + if the container itself is not currently active. In other words this would indicate + the item that will get focus if you tab to the container. + + This information is important for knowing what to report for trees and potentially + other containers in a virtual buffer. + + Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. +*/ +IA2_STATE_ACTIVE = 0x1, + +/** Indicates that the object is armed. + + Used to indicate that the control is "pressed" and will be invoked when the + actuator, e.g. a mouse button, is "released". An AT which either monitors the + mouse or synthesizes mouse events might need to know that, and possibly a talking + interface would even let the user know about it. It could also potentially be + useful to on screen keyboards or test tools since the information does indicate + something about the state of the interface, for example, code operating asynchronously + might need to wait for the armed state to change before doing something else. + +*/ +IA2_STATE_ARMED = 0x2, + +/** Indicates the user interface object corresponding to this object no longer exists. */ +IA2_STATE_DEFUNCT = 0x4, + +/** An object with this state has a caret and implements the IAccessibleText interface. + + Such fields may be read-only, so STATE_SYSTEM_READONLY is valid in combination + with IA2_STATE_EDITABLE. + +*/ +IA2_STATE_EDITABLE = 0x8, + +/** Indicates the orientation of this object is horizontal. */ +IA2_STATE_HORIZONTAL = 0x10, + +/** Indicates this object is minimized and is represented only by an icon. */ +IA2_STATE_ICONIFIED = 0x20, + +/** Indicates an input validation failure. */ +IA2_STATE_INVALID_ENTRY = 0x40, + +/** Indicates that this object manages its children. + + Note: Due to the fact that MSAA's WinEvents don't allow the active child index + to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages + descendants scheme can't be used. Instead the active child object has to fire + MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be + added to provide for event specific data to be passed with the event. At that + time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and + IA2_STATE_MANAGES_DESCENDANTS state would be useful. +*/ +IA2_STATE_MANAGES_DESCENDANTS = 0x80, + +/** Indicates that an object is modal. + + Modal objects have the behavior that something must be done with the object + before the user can interact with an object in a different window. +*/ +IA2_STATE_MODAL = 0x100, + +/** Indicates this text object can contain multiple lines of text. */ +IA2_STATE_MULTI_LINE = 0x200, + +/** Indicates this object paints every pixel within its rectangular region. */ +IA2_STATE_OPAQUE = 0x400, + +/** Indicates that user interaction is required. + + An example of when this state is used is when a field in a form must be filled + before a form can be processed. +*/ +IA2_STATE_REQUIRED = 0x800, + +/** Indicates an object which supports text selection. + + Note: This is different than MSAA STATE_SYSTEM_SELECTABLE. +*/ +IA2_STATE_SELECTABLE_TEXT = 0x1000, + +/** Indicates that this text object can contain only a single line of text. */ +IA2_STATE_SINGLE_LINE = 0x2000, + +/** Indicates that the accessible object is stale. + + This state is used when the accessible object no longer accurately + represents the state of the object which it is representing such as when an + object is transient or when an object has been or is in the process of being + destroyed or when the object's index in its parent has changed. +*/ +IA2_STATE_STALE = 0x4000, + +/** Indicates that the object implements autocompletion. + + This state indicates that a text control will respond to the input of + one ore more characters and cause a sub-item to become selected. The + selection may also result in events fired on the parent object. +*/ +IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000, + +/** Indicates this object is transient. + + An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS. + For example, a list item object may be managed by its parent list object and may only + exist as long as the object is actually rendered. Similarly a table cell's accessible + object may exist only while the cell has focus. However, from the perspective of an + assistive technology a transient object behaves like a non-transient object. As a + result it is likely that this state is not of use to an assistive technology, but it + is provided in case an assistive technology determines that knowledge of the transient + nature of the object is useful and also for harmony with the Linux accessibility API. + + Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. + */ +IA2_STATE_TRANSIENT = 0x10000, + +/** Indicates the orientation of this object is vertical. */ +IA2_STATE_VERTICAL = 0x20000, + +/** Indicates this object is checkable. + + The standard checkable objects are check boxes, radio buttons, check box menu + items, radio menu items, and toggle buttons. Since assistive technology will + determine that these objects are checkable via the object's role the checkable + state is not required. However, this state is necessary in those cases where + an object has a role which is not one of the previously mentioned roles. An + example is a table cell which indicates whether or not an email has an attachment, + whether or not an mail is considered spam, and whether or not an email has been read. + */ +IA2_STATE_CHECKABLE = 0x40000, + +/** Indicates this object is pinned. + + This state indicates that an object is fixed at a certain location. One example + is a browser tab that when pinned cannot be moved until unpinned. Another example + is a movable or floating object that when pinned remains in its pinned location + until being unpinned. + */ +IA2_STATE_PINNED = 0x80000 + +}; +/************************************************************************* + * + * File Name (Accessible2.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + +/** @mainpage + + @section _interfaces Interfaces + IAccessible2\n + IAccessible2_2\n + IAccessibleAction\n + IAccessibleApplication\n + IAccessibleComponent\n + IAccessibleDocument\n + IAccessibleEditableText\n + IAccessibleHypertext\n + IAccessibleHypertext2\n + IAccessibleHyperlink\n + IAccessibleImage\n + IAccessibleRelation\n + IAccessibleTable [Deprecated]\n + IAccessibleTable2\n + IAccessibleTableCell\n + IAccessibleText\n + IAccessibleText2\n + IAccessibleValue + + @section _structs Structs + IA2Locale\n + IA2TableModelChange\n + IA2TextSegment + + @section _enums Enums + ::IA2Actions values are predefined actions for use when implementing support for HTML5 media.\n + ::IA2CoordinateType values define the requested coordinate type (screen or parent window).\n + ::IA2EventID values identify events.\n + ::IA2Role values defines roles which are in addition to the existing MSAA roles.\n + ::IA2ScrollType values define where to place an object or substring on the screen.\n + ::IA2States values define states which are in addition to the existing MSAA states.\n + ::IA2TableModelChangeType values describe the kinds of changes made to a table (insert, delete, update).\n + ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph).\n + ::IA2TextSpecialOffsets values define special offsets for use in the text interfaces. + + @section _constants Constants + @ref grpRelations + + @section _misc Miscellaneous + @ref _licensePage "BSD License"\n + @ref _generalInfo "General Information"\n + + @page _licensePage BSD License + %IAccessible2 IDL Specification + + Copyright (c) 2007, 2013 Linux Foundation\n + Copyright (c) 2006 IBM Corporation\n + Copyright (c) 2000, 2006 Sun Microsystems, Inc.\n + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + 3. Neither the name of the Linux Foundation nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This BSD License conforms to the Open Source Initiative "Simplified + BSD License" as published at: + http://www.opensource.org/licenses/bsd-license.php + + %IAccessible2 is a trademark of the Linux Foundation. The %IAccessible2 + mark may be used in accordance with the + <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/trademark-policy"> + Linux Foundation Trademark Policy</a> to indicate compliance with the %IAccessible2 specification. + + @page _generalInfo General Information + The following information is applicable to two or more interfaces. + + @ref _errors\n + @ref _memory\n + @ref _arrayConsideration\n + @ref _indexes\n + @ref _enumBase\n + @ref _specialOffsets\n + @ref _dicoveringInterfaces\n + @ref _changingInterfaces\n + @ref _applicationInfo\n + @ref _childIDs\n + @ref _variants\n + @ref _iaaction-iahyperlink\n + @ref _trademark + + @section _errors Error Handling + HRESULT values are defined by the Microsoft® Win32® API. For more information, refer to + <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137%28v=vs.85%29.aspx"> + Interpreting HRESULT Values</a> in MSDN®. + + Note that the S_FALSE return value is considered a non-error value and the + SUCCEEDED macro will return TRUE. S_FALSE is used when there is no failure + but there was nothing valid to return, e.g. in IAccessible2::attributes when + there are no attributes. When S_FALSE is returned [out] pointer types should + be NULL and [out] longs should generally be 0, but sometimes -1 is used such + as IAccessible2::indexInParent, IAccessibleText::caretOffset, and + IAccessibleHypertext::hyperlinkIndex. + + Note that for BSTR [out] variables common COM practice is that the server does + the SysAllocString and the client does the SysFreeString. Also note that when + NULL is returned there is no need for the client to call SysFreeString. Please + refer to the documentation for each method for more details regarding error handling. + + @section _memory Memory Management + The following memory management issues should be considered: + @li Although [out] BSTR variables are declared by the client, their space is + allocated by the server. They need to be freed with SysFreeString by the + client at end of life; the same is true when BSTRs are used in structs or + arrays which are passed to the server. + @li If there is no valid [out] BSTR to return, the server should return S_FALSE and + assign NULL to the output, e.g. *theOutBSTR = NULL;. + @li COM interfaces need to be referenced with AddRef when used and dereferenced + with Release at end of life. + @li Single [out] longs, HWNDs, booleans, and structs are declared by the caller + and passed by reference. The marshaller does all the memory management. + + The following articles may be helpful for understanding memory management issues: + @li An article by Don Box in a + <a href="http://www.microsoft.com/msj/1196/activex1196.aspx">Q & A section</a> + of the November 1996 edition of the Microsoft Systems Journal. + @li A posting to a CodeGuru forum, + <a href="http://www.codeguru.com/forum/showthread.php?t=364511">Windows SDK + String: What are the rules for BSTR allocation and deallocation?</a> + + @subsection _arrayConsideration Special Consideration when using Arrays + There are several methods which return arrays. In the case of IAccessible2::relations + and IAccessibleRelation::targets the client must allocate and free the arrays. + + For the remaining methods which return arrays, the server must allocate the array + and the client must free the array when no longer needed. These methods are + IAccessible2::extendedStates, IAccessible2::localizedExtendedStates, + IAccessible2_2::relationTargetsOfType, IAccessibleAction::keyBinding, + IAccessibleHypertext2::hyperlinks, IAccessibleTable::selectedChildren, + IAccessibleTable::selectedColumns, IAccessibleTable::selectedRows, + IAccessibleTable2::selectedCells, IAccessibleTable2::selectedColumns, + IAccessibleTable2::selectedRows, IAccessibleTableCell::columnHeaderCells, + and IAccessibleTableCell::rowHeaderCells. + For those methods, the server must allocate both the top level array and any storage + associated with it, e.g. for BSTRs. The server must allocate the arrays with + CoTaskMemAlloc and any BSTRs with SysAllocString. The client must use CoTaskMemFree + to free the array and any BSTRs must be freed with SysFreeString. + + Also, the IDL for IAccessible2::extendedStates, IAccessible2::localizedExtendedStates, + IAccessibleAction::keyBinding, IAccessibleTable::selectedChildren, + IAccessibleTable::selectedColumns, and IAccessibleTable::selectedRows includes an + extraneous [in] parameter for the caller to specify the max size of the array. + This parameter will be ignored by the COM server. + + @section _indexes Zero and One Based Indexes + Unless otherwise specified all offsets and indexes are 0 based. + + @section _enumBase Enum Base + Note that enums start at 0. + + @section _specialOffsets Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods + IAccessibleText and IAccessibleEditableText can use one or more of the following + special offset values. They are defined in the ::IA2TextSpecialOffsets enum. + @li Using ::IA2_TEXT_OFFSET_LENGTH (-1) as an offset in any of the IAccessibleText or + IAccessibleEditableText methods is the same as specifying the length of the string. + @li Using ::IA2_TEXT_OFFSET_CARET (-2) as an offset for IAccessibleText::textBeforeOffset, + IAccessibleText::textAtOffset, and IAccessibleText::textAfterOffset indicates that the + text related to the physical location of the caret should be used. This is needed for + applications that consider the character offset of the end of one line (as reached by + pressing the End key) the same as the offset of the first character on the next line. + Since the same offset is associated with two different lines a special means is needed + to fetch text from the line where the caret is physically located. + + @section _dicoveringInterfaces Discovery of Interfaces + In general AT (Assistive Technology) should try IAccessible2 interfaces, followed by using + the MSAA (Microsoft® Active Accessibility®) interfaces. (In cases where the an application + is known to have custom interfaces which provide information not supplied by IAccessible2 + or MSAA, then those custom interfaces can be used.) The AT can then, by default, support + unknown IAccessible2/MSAA applications, without the application developers having to request + AT vendors for support on an individual application by application basis. + + When you have a reference to an IAccessible and require a reference to an IAccessible2 use + QueryService as follows: + @code + // pAcc is a reference to the accessible object's IAccessible interface. + IServiceProvider *pService = NULL; + hr = pAcc->QueryInterface(IID_IServiceProvider, (void **)&pService); + if(SUCCEEDED(hr)) { + IAccessible2 *pIA2 = NULL; + hr = pService->QueryService(IID_IAccessible, IID_IAccessible2, (void**)&pIA2); + if (SUCCEEDED(hr) && pIA2) { + // The control supports IAccessible2. + // pIA2 is the reference to the accessible object's IAccessible2 interface. + } + } + @endcode + + @section _changingInterfaces Changing between Accessible Interfaces + Note that developers must always implement MSAA's IAccessible and, if needed, some + of the interfaces in the set of IAccessible2 interfaces. Although the IAccessible2 + IDL is coded such that IAccessible2 is a subclass of MSAA's IAccessible, none of + MSAA's IAccessible methods are redefined by IAccessible2. + + QueryService must be used to switch from a reference to an MSAA IAccessible interface + to another interface. This has been + <a href="http://www.atia.org/files/public/Introducing_IAccessibleEx.doc"> + documented</a> and the pertinent facts have been extracted below: + + @par + Why use QueryService instead of just using QueryInterface to get IAccessibleEx + directly? The reason is that since MSAA 2.0, clients don't talk to a server's + IAccessible interface directly; instead they talk to an intermediate MSAA-provided + wrapper that calls through to the original IAccessible. This wrapper provides services + such as implementing IDispatch, supplying information from MSAA 2.0's Dynamic Annotation + service, and scaling locations when running on Windows Vista with DPI scaling enabled. + QueryService is the supported way to expose additional interfaces from an existing + IAccessible and was originally used by MSHTML to expose IHTMLElement objects corresponding + to IAccessibles. QueryService is often more convenient for servers to implement than + QueryInterface because it does not have the same requirements for preserving object + identity or symmetry/transitivity as QueryInterface, so QueryService allows servers to + easily implement the interface on the same object or a separate object. The latter is + often hard to do with QueryInterface unless the original object supports aggregation. + + Two related references in MSDN® are: + @li <a href="http://msdn.microsoft.com/en-us/library/ms696078(VS.85).aspx"> + "Using QueryService to expose a native object model interface for an IAccessible object"</a> + @li <a href="http://msdn.microsoft.com/en-us/library/ms528415.aspx#acc_obj"> + "Accessing the Internet Explorer Object Associated with an Accessible Object"</a> + + Based on this information from Microsoft, QueryService must be used to switch back and forth + between a reference to an MSAA IAccessible interface and any of the IAccessible2 interfaces. + + Regarding switching between any of the IAccessible2 interfaces, applications implementing + IAccessible2 should implement the IAccessible2 interfaces on a single object since ATs + will be using QueryInterface to switch between the IAccessilbe2 interfaces. Implementing + the IAccessible2 interfaces on separate objects would require the use of QueryService. + There is one exception, IAccessibleApplication can be implemented on a separate object so + its common code doesn't have to be included in each accessible object. ATs should use + QueryService to access IAccessibleApplication. + + @section _applicationInfo Access to Information about the Application + Servers implementing IAccessible2 should provide access to the IAccessibleApplication + interface via QueryService from any object so that ATs can easily determine specific + information about the application such as its name or version. + + @section _childIDs Child IDs + The IAccessible2 interfaces do not support child IDs, i.e. simple child elements. + Full accessible objects must be created for each object that supports IAccessible2. + Therefore MSAA's get_accChild should never return a child ID (other than CHILDID_SELF) + for an object that implements any of the IAccessible2 interfaces. + + Microsoft's UI Automation specification has the same limitation and this was resolved + in the UI Automation Express specification by adding IAccessibleEx::GetObjectForChild + and IAccessibleEx::GetIAccessiblePair. These methods allow mapping back and forth + between an IAccessibleEx and an {IAccessible, Child ID} pair. A future version of + IAccessible2 may include similar methods to map back and forth between an IAccessible2 + and an {IAccessible, Child ID} pair. + + @section _variants VARIANTs + Some methods return a VARIANT. Implementers need to make sure that the return type is + specified, i.e. VT_I4, VT_IDISPATCH, etc. The methods that return VARIANTs are + IAccessibleHyperlink::anchor, IAccessibleHyperlink::anchorTarget, IAccessibleValue::currentValue, + IAccessibleValue::maximumValue, IAccessibleValue::minimumValue. + + @section _iaaction-iahyperlink IAccessibleHyperlink as subclass of IAccessibleAction + In this version of the IDL, IAccessibleHyperlink is a subclass of IAccessibleAction. + However, there is no practical need for that inheritance and in some cases, such as + an image map of smart tags, it doesn't make sense because such an image map doesn't + have actionable objects; it's the secondary smart tags that are actionable. As a + result, implementations should not rely on the inheritance as it may be removed in + a later version of the IDL. + + @section _trademark Trademark Attribution + The names of actual companies and products mentioned herein may be the trademarks of + their respective owners. In particular, Active Accessibility, Microsoft, MSDN, and Win32 + are trademarks of the Microsoft group of companies in the U.S.A. and/or other countries. + +**/ + + + + + + + + +/** A structure defining the locale of an accessible object. + +IAccessible2::locale returns this struct. +*/ +typedef struct IA2Locale { + BSTR language; ///< ISO 639-1 Alpha-2 two character language code + BSTR country; ///< ISO 3166-1 Alpha-2 two character country code + BSTR variant; ///< Application specific variant of the locale +} IA2Locale; + +/** @brief This interface exposes the primary set of information about an + IAccessible2 enabled accessible object. + + This interface must always be provided for objects that support some + portion of the collection of the %IAccessible2 interfaces. + + Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces" + for special considerations related to use of the MSAA IAccessible interface and + the set of %IAccessible2 interfaces. + */ +[object, uuid(E89F726E-C4F4-4c19-BB19-B647D7FA8478)] +interface IAccessible2 : IAccessible +{ + + /** @brief Returns the number of accessible relations for this object. + @param [out] nRelations + @retval S_OK + */ + [propget] HRESULT nRelations + ( + [out, retval] long *nRelations + ); + + /** @brief Returns one accessible relation for this object. + @param [in] relationIndex + 0 based + @param [out] relation + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT relation + ( + [in] long relationIndex, + [out, retval] IAccessibleRelation **relation + ); + + /** @brief Returns multiple accessible relations for this object. + @param [in] maxRelations + maximum size of the array allocated by the client + @param [out] relations + The array of accessible relation objects. Note that this array is to be + allocated by the client and freed when no longer needed. Refer to @ref + _arrayConsideration "Special Consideration when using Arrays" for more details. + @param [out] nRelations + actual number of relations in the returned array (not more than maxRelations) + @retval S_OK + @retval S_FALSE if there are no relations, nRelations is set to 0 + @note As a performant alternative, client code should consider using IAccessible2_2::relationTargetsOfType. + */ + [propget] HRESULT relations + ( + [in] long maxRelations, + [out, size_is(maxRelations), length_is(*nRelations)] + IAccessibleRelation **relations, + [out, retval] long *nRelations + ); + + /** @brief Returns the role of an %IAccessible2 object. + @param [out] role + The role of an %IAccessible2 object. + @retval S_OK + @note + @li For convenience MSAA roles are also passed through this method so the + AT doesn't have to also fetch roles through MSAA's get_accRole. + @li %IAccessible2 roles should not be passed through MSAA's get_accRole. + @li For compatibility with non IAccessible2 enabled ATs, IAccessible2 + applications should also add support to get_accRole to return the closest + MSAA role or ROLE_SYSTEM_CLIENT (the MSAA defined default role) if there + is not a good match. + @li This method is missing a [propget] prefix in the IDL. The result is the + method is named role in generated C++ code instead of get_role. + */ + HRESULT role + ( + [out, retval] long *role + ); + + /** @brief Makes an object visible on the screen. + @param [in] scrollType + Defines where the object should be placed on the screen. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT scrollTo + ( + [in] enum IA2ScrollType scrollType + ); + + /** @brief Moves the top left of an object to a specified location. + + @param [in] coordinateType + Specifies whether the coordinates are relative to the screen or the parent object. + @param [in] x + Defines the x coordinate. + @param [in] y + Defines the y coordinate. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT scrollToPoint + ( + [in] enum IA2CoordinateType coordinateType, + [in] long x, + [in] long y + ); + + /** @brief Returns grouping information. + + Used for tree items, list items, tab panel labels, radio buttons, etc. + Also used for collections of non-text objects. + + @param [out] groupLevel + 1 based, 0 indicates that this value is not applicable + @param [out] similarItemsInGroup + 1 based, 0 indicates that this value is not applicable + @param [out] positionInGroup + 1 based, 0 indicates that this value is not applicable. This is an index + into the objects in the current group, not an index into all the objects + at the same group level. + @retval S_OK if at least one value is valid + @retval S_FALSE if no values are valid, [out] values are 0s + @note This method is meant to describe the nature of an object's containment + structure. It's exposed by trees, tree grids, nested lists, nested menus, + but not headings, which uses the level object attribute. It is also exposed + by radio buttons (with groupLevel == 0). + @note This is normally not implemented on a combo box to describe the nature + of its contents. Normally an AT will get that information from its child list + object. However, in some cases when non-edit combo boxes are not able to be structured + such that the list is a child of the combo box, this method is implemented on + the combo box itself. ATs can use this interface if a child list is not found. + */ + [propget] HRESULT groupPosition + ( + [out] long *groupLevel, + [out] long *similarItemsInGroup, + [out, retval] long *positionInGroup + ); + + /** @brief Returns the bit strip containing any IAccessible2 states. + + The IAccessible2 states are in addition to the MSAA states and are defined in + the IA2States enum. + + @param [out] states + @retval S_OK + */ + [propget] HRESULT states + ( + [out, retval] AccessibleStates *states + ); + + /** @brief Returns the extended role. + + An extended role is a role which is dynamically generated by the application. + It is not predefined by the %IAccessible2 specification. + + @param [out] extendedRole + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT extendedRole + ( + [out, retval] BSTR *extendedRole + ); + + /** @brief Returns the localized extended role. + @param [out] localizedExtendedRole + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT localizedExtendedRole + ( + [out, retval] BSTR *localizedExtendedRole + ); + + /** @brief Returns the number of extended states. + @param [out] nExtendedStates + @retval S_OK + */ + [propget] HRESULT nExtendedStates + ( + [out, retval] long *nExtendedStates + ); + + /** @brief Returns the extended states (array of strings). + + An extended state is a state which is dynamically generated by the application. + It is not predefined by the %IAccessible2 specification. + + @param [in] maxExtendedStates + This parameter is ignored. Refer to @ref _arrayConsideration + "Special Consideration when using Arrays" for more details. + @param [out] extendedStates + This array is allocated by the server. The client must free it with CoTaskMemFree. + @param [out] nExtendedStates + The number of extended states returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively + */ + [propget] HRESULT extendedStates + ( + [in] long maxExtendedStates, + [out, size_is(,maxExtendedStates), length_is(,*nExtendedStates)] BSTR **extendedStates, + [out, retval] long *nExtendedStates + ); + + /** @brief Returns the localized extended states (array of strings). + + @param [in] maxLocalizedExtendedStates + This parameter is ignored. Refer to @ref _arrayConsideration + "Special Consideration when using Arrays" for more details. + @param [out] localizedExtendedStates + This array is allocated by the server. The client must free it with CoTaskMemFree. + @param [out] nLocalizedExtendedStates + The number of localized extended states returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively + */ + [propget] HRESULT localizedExtendedStates + ( + [in] long maxLocalizedExtendedStates, + [out, size_is(,maxLocalizedExtendedStates), length_is(,*nLocalizedExtendedStates)] BSTR **localizedExtendedStates, + [out, retval] long *nLocalizedExtendedStates + ); + + /** @brief Returns the unique ID. + + The uniqueID is an identifier for this object, is unique within the + current window, and remains the same for the lifetime of the accessible + object. + + The uniqueID is not related to: + - the MSAA objectID which is used by the server to disambiguate between + IAccessibles per HWND or + - the MSAA childID which is used to disambiguate between children being + managed by an IAccessible. + + This value is provided so the AT can have access to a unique runtime persistent + identifier even when not handling an event for the object. + + An example of when this value is useful is if the AT wants to build a cache. + The AT could cache the uniqueIDs in addition to other data being cached. + When an event is fired the AT could map the uniqueID to its internal model. + Thus, if there's a REORDER/SHOW/HIDE event the AT knows which part of the + internal structure has been invalidated and can refetch just that part. + + This value can also be used by an AT to determine when the current control + has changed. If the role is the same for two controls that are adjacent in + the tab order, this can be used to detect the new control. + + Another use of this value by an AT is to identify when a grouping object has + changed, e.g. when moving from a radio button in one group to a radio button in a + different group. + + One means of implementing this would be to create a factory with a 32 bit number + generator and a reuse pool. The number generator would emit numbers starting + at 1. Each time an object's life cycle ended, its number would be saved into a + reuse pool. The number generator would be used whenever the reuse pool was empty. + + Another way to create a unique ID is to generate it from a pointer value, e.g. an + object's address. That would be unique because no two active objects can use the + same allocated memory space. + + @param [out] uniqueID + @retval S_OK + */ + [propget] HRESULT uniqueID + ( + [out, retval] long *uniqueID + ); + + /** @brief Returns the window handle for the parent window which contains this object. + + This is the same window handle which will be passed for any events that occur on the + object, but is cached in the accessible object for use when it would be helpful to + access the window handle in cases where an event isn't fired on this object. + + A use case is when a screen reader is grabbing an entire web page on a page load. + Without the availability of windowHandle, the AT would have to get the window handle + by using WindowFromAccessibleObject on each IAccessible, which is slow because it's + implemented by oleacc.dll as a loop which crawls up the ancestor chain and looks for + a ROLE_WINDOW object, mapping that back to a window handle. + + @param [out] windowHandle + @retval S_OK + */ + [propget] HRESULT windowHandle + ( + [out, retval] HWND *windowHandle + ); + + /** @brief Returns the index of this object in its parent object. + @param [out] indexInParent + 0 based; -1 indicates there is no parent; the upper bound is the value + returned by the parent's IAccessible::get_accChildCount. + @retval S_OK + @retval S_FALSE if no parent, [out] value is -1 + */ + [propget] HRESULT indexInParent + ( + [out, retval] long *indexInParent + ); + + /** @brief Returns the IA2Locale of the accessible object. + @param [out] locale + @retval S_OK + */ + [propget] HRESULT locale + ( + [out, retval] IA2Locale *locale + ); + + /** @brief Returns the attributes specific to this object, such as a cell's formula. + @param [out] attributes + @retval S_OK + @retval S_FALSE returned if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT attributes + ( + [out, retval] BSTR *attributes + ); + +} + +/************************************************************************* + * + * File Name (Accessible2_2.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + +/** @brief This interface exposes the primary set of information about an + IAccessible2 enabled accessible object. + + This interface must always be provided for objects that support some + portion of the collection of the %IAccessible2 interfaces. + + Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces" + for special considerations related to use of the MSAA IAccessible interface and + the set of %IAccessible2 interfaces. + */ +[object, uuid(6C9430E9-299D-4E6F-BD01-A82A1E88D3FF)] +interface IAccessible2_2 : IAccessible2 +{ + /** @brief Returns the attribute value of a specified attribute specific to this object. + @param [in] name + @param [out] attribute + @retval S_OK + @retval S_FALSE returned if there is nothing to return, [out] value is NULL. + @retval E_INVALIDARG if bad [in] passed. + @note The output value is a VARIANT. Typically it will be a VT_BSTR, but there + are some cases where it will be a VT_I4 or VT_BOOL. Refer to the <a href= + "http://www.linuxfoundation.org/collaborate/workgroups/accessibility/iaccessible2/objectattributesIAccessible2"> + Object Attributes specification</a> for more information. + */ + [propget] HRESULT attribute + ( + [in] BSTR name, + [out, retval] VARIANT *attribute + ); + + /** @brief Returns the deepest hypertext accessible in the subtree of this object, and the caret offset within it. + @param [out] accessible + @param [out] caretOffset + @retval S_OK + @retval S_FALSE returned if there is no caret in any of the objects in the subtree, [out] accessible is NULL and [out] caretOffset is -1. + */ + [propget] HRESULT accessibleWithCaret + ( + [out] IUnknown **accessible, + [out, retval] long *caretOffset + ); + + /** @brief Returns relation targets for a specified target type. + @param [in] type + The requested @ref grpRelations "relation type". + @param [in] maxTargets + The number of targets requested. 0 indicates that all targets should be returned. + @param [out] targets + This array is allocated by the server. The client must free it with CoTaskMemFree. + @param [out] nTargets + The number of targets returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are no targets, [out] values are NULL and 0 respectively. + @retval E_INVALIDARG if bad [in] passed. + */ + [propget] HRESULT relationTargetsOfType + ( + [in] BSTR type, + [in] long maxTargets, + [out, size_is(,*nTargets)] IUnknown ***targets, + [out, retval] long *nTargets + ); + +} + +/************************************************************************* + * + * File Name (AccessibleComponent.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + +/** A value specifying a color in ARGB format, where each 8 bit color component +specifies alpha, red, green, and blue respectively. The alpha value is optional. +*/ +typedef long IA2Color; + +/** @brief This interface is implemented by any object that can be rendered + on the screen. + + This interface provides the standard mechanism for an assistive technology + to retrieve information concerning the graphical representation of an object. + Coordinates used by the functions of this interface are specified in + different coordinate systems. Their scale is the same and is equal to + that of the screen coordinate system. In other words all coordinates + are measured in pixels. They differ in their respective origin: + <ul> + <li>The screen coordinate system has its origin in the upper left + corner of the current screen.</li> + <li>The origin of the parent coordinate system is the upper left corner + of the parent's bounding box. With no parent the screen coordinate + system is used instead.</li> + </ul> +*/ +[object, uuid(1546D4B0-4C98-4bda-89AE-9A64748BDDE4)] +interface IAccessibleComponent : IUnknown +{ + + /** @brief Returns the location of the upper left corner of the object's + bounding box relative to the immediate parent object. + + The coordinates of the bounding box are given relative to the parent's + coordinate system. The coordinates of the returned position are relative + to this object's parent or relative to the screen on which this object + is rendered if it has no parent. If the object is not on any screen + the returned position is (0,0). + + @param [out] x + @param [out] y + @retval S_OK + */ + [propget] HRESULT locationInParent + ( + [out] long *x, + [out, retval] long *y + ); + + /** @brief Returns the foreground color of this object. + @param [out] foreground + The returned color is the foreground color of this object or, if + that is not supported, the default foreground color. + @retval S_OK + */ + [propget] HRESULT foreground + ( + [out, retval] IA2Color *foreground + ); + + /** @brief Returns the background color of this object. + @param [out] background + The returned color is the background color of this object or, if + that is not supported, the default background color. + @retval S_OK + */ + [propget] HRESULT background + ( + [out, retval] IA2Color *background + ); +} +/************************************************************************* + * + * File Name (AccessibleValue.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + +/** @brief This interface gives access to a single numerical value. + + The %IAccessibleValue interface represents a single numerical value and should + be implemented by any class that supports numerical value like progress bars + and spin boxes. This interface lets you access the value and its upper and + lower bounds. +*/ +[object, uuid(35855B5B-C566-4fd0-A7B1-E65465600394)] +interface IAccessibleValue : IUnknown +{ + + /** @brief Returns the value of this object as a number. + + The exact return type is implementation dependent. Typical types are long and + double. + @param [out] currentValue + Returns the current value represented by this object. See the section about + @ref _variants "VARIANTs" for additional information. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY + */ + [propget] HRESULT currentValue + ( + [out, retval] VARIANT *currentValue + ); + + /** @brief Sets the value of this object to the given number. + + The argument is clipped to the valid interval whose upper and lower + bounds are returned by the methods IAccessibleValue::maximumValue and + IAccessibleValue::minimumValue, i.e. if it is lower than the minimum + value the new value will be the minimum and if it is greater than the + maximum then the new value will be the maximum. + + @param [in] value + The new value represented by this object. The set of admissible types for + this argument is implementation dependent. + @retval S_OK + */ + HRESULT setCurrentValue + ( + [in] VARIANT value + ); + + /** @brief Returns the maximal value that can be represented by this object. + + The type of the returned value is implementation dependent. It does not have + to be the same type as that returned by method IAccessibleValue::currentValue. + + @param [out] maximumValue + Returns the maximal value in an implementation dependent type. If this object + has no upper bound then an empty object is returned. See the section about + @ref _variants "VARIANTs" for additional information. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY + */ + [propget] HRESULT maximumValue + ( + [out, retval] VARIANT *maximumValue + ); + + /** @brief Returns the minimal value that can be represented by this object. + + The type of the returned value is implementation dependent. It does not have + to be the same type as that returned by method IAccessibleValue::currentValue. + + @param [out] minimumValue + Returns the minimal value in an implementation dependent type. If this object + has no lower bound then an empty object is returned. See the section about + @ref _variants "VARIANTs" for additional information. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY + */ + [propget] HRESULT minimumValue + ( + [out, retval] VARIANT *minimumValue + ); + +}; +/************************************************************************* + * + * File Name (AccessibleText.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + +/** A structure containing a substring and the start and end offsets in the enclosing string. + + IAccessibleText::newText and IAccessibleText::oldText return this struct. +*/ +typedef struct IA2TextSegment { + BSTR text; ///< A copy of a segment of text taken from an enclosing paragraph. + long start; ///< Index of the first character of the segment in the enclosing text. + long end; ///< Index of the character following the last character of the segment in the enclosing text. +} IA2TextSegment; + +/** This enum defines values which specify a text boundary type. + + IA2_TEXT_BOUNDARY_SENTENCE is optional. When a method doesn't implement this + method it must return S_FALSE. Typically this feature would not be implemented + by an application. However, if the application developer was not satisfied with + how screen readers have handled the reading of sentences this boundary type + could be implemented and screen readers could use the application's version of a + sentence rather than the screen reader's. + + The rest of the boundary types must be supported. + + This enum is used in IAccessibleText::textBeforeOffset, IAccessibleText::textAtOffset, + and IAccessibleText::textAfterOffset. +*/ + +enum IA2TextBoundaryType { + IA2_TEXT_BOUNDARY_CHAR, /**< Typically, a single character is returned. In some cases more than + one character is returned, for example, when a document contains field + data such as a field containing a date, time, or footnote reference. + In this case the caret can move over several characters in one movement + of the caret. Note that after the caret moves, the caret offset changes + by the number of characters in the field, e.g. by 8 characters in the + following date: 03/26/07. */ + IA2_TEXT_BOUNDARY_WORD, /**< The range provided matches the range observed when the application + processes the Ctrl + left arrow and Ctrl + right arrow key sequences. + Typically this is from the start of one word to the start of the next, but + various applications are inconsistent in the handling of the end of a line. */ + IA2_TEXT_BOUNDARY_SENTENCE, ///< Range is from start of one sentence to the start of another sentence. + IA2_TEXT_BOUNDARY_PARAGRAPH, ///< Range is from start of one paragraph to the start of another paragraph. + IA2_TEXT_BOUNDARY_LINE, /**< Range is from start of one line to the start of another line. This + often means that an end-of-line character will appear at the end of the + range. However in the case of some applications an end-of-line character + indicates the end of a paragraph and the lines composing the paragraph, + other than the last line, do not contain an end of line character. */ + IA2_TEXT_BOUNDARY_ALL ///< Using this value will cause all text to be returned. +}; + +/** @brief This interface gives read-only access to text. + + The %IAccessibleText interface should be implemented by all components + that present textual information on the display like buttons, + text entry fields, or text portions of the document window. The interface + provides access to the text's content, attributes, and spatial location. + However, text can not be modified with this interface. That is the task + of the IAccessibleEditableText interface. + + The text length, i.e. the number of characters in the text, is + returned by IAccessibleText::nCharacters. All methods that operate + on particular characters (e.g. IAccessibleText::textAtOffset) use character + indices from 0 to length-1. All methods that operate on character positions + (e.g. IAccessibleText::text) use indices from 0 to length. + + Please note that accessible text does not necessarily support selection. + In this case it should behave as if there where no selection. An empty + selection is used for example to express the current cursor position. + + Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + + E_FAIL is returned in the following cases + @li endOffset < startOffset + @li endoffset > length +*/ +[object, uuid(24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B)] +interface IAccessibleText : IUnknown +{ + + /** @brief Adds a text selection + @param [in] startOffset + Starting offset ( 0 based). + @param [in] endOffset + Offset of first character after new selection (0 based). + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + */ + HRESULT addSelection + ( + [in] long startOffset, + [in] long endOffset + ); + + /** @brief Returns text attributes. + @param [in] offset + Text offset (0 based). Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + @param [out] startOffset + The starting offset of the character range over which all text attributes match + those of offset. (0 based) + @param [out] endOffset + The offset of the first character past the character range over which all text + attributes match those of offset. (0 based) + @param [out] textAttributes + A string of attributes describing the text. The attributes are described in the + <a href="http://www.linuxfoundation.org/en/Accessibility/IAccessible2/TextAttributes"> + text attributes specification</a> on the %IAccessible2 web site. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] values are 0s and NULL respectively + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT attributes + ( + [in] long offset, + [out] long *startOffset, + [out] long *endOffset, + [out, retval] BSTR *textAttributes + ); + + /** @brief Returns the position of the caret. + + Returns the 0-based offset of the caret within the text. If the text is + implemented as a tree of text objects with embed characters in higher levels + representing substrings of child text objects and the caret is in one of the + child text objects, then the offset in the higher level text object would be + at the embed character representing child text object that contains the caret. + + For example, if the string "one two three" is implemented as a two text objects, + with a top level text object containing an embed character "one ? three" and a + child text object containing "two" and if the caret is in the descendant object + just before the 'o' in "two", then: + <ul> + <li>the caretOffset for the "one ? three" object would be 4, matching the embed character</li> + <li>the caretOffset for "two" would be 2, matching the "o"</li> + </ul> + The caret position/offset is that of the character logically following it, e.g. + to the right of it in a left to right language, or to the left of it in a right + to left language. + @param [out] offset + The returned offset is relative to the text represented by this object. + @retval S_OK + @retval S_FALSE if the caret is not currently active on this object, i.e. the + caret is located on some other object. The returned offset value will be -1. + @note S_FALSE (and an offset of -1) will not be returned if the caret is somewhere + in the text object or one of its descendants. + */ + [propget] HRESULT caretOffset + ( + [out, retval] long *offset + ); + + + /** @brief Returns the bounding box of the specified position. + + The virtual character after the last character of the represented + text, i.e. the one at position length is a special case. It represents the + current input position and will therefore typically be queried by AT more + often than other positions. Because it does not represent an existing character + its bounding box is defined in relation to preceding characters. It should be + roughly equivalent to the bounding box of some character when inserted at the + end of the text. Its height typically being the maximal height of all the + characters in the text or the height of the preceding character, its width being + at least one pixel so that the bounding box is not degenerate. + + Note that the index 'length' is not always valid. Whether it is or not is + implementation dependent. It typically is when text is editable or otherwise + when on the screen the caret can be placed behind the text. You can be sure + that the index is valid after you have received a ::IA2_EVENT_TEXT_CARET_MOVED + event for this index. + @param [in] offset + Index of the character for which to return its bounding box. The valid range + is 0..length. Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + @param [in] coordType + Specifies if the coordinates are relative to the screen or to the parent window. + @param [out] x + X coordinate of the top left corner of the bounding box of the referenced character. + @param [out] y + Y coordinate of the top left corner of the bounding box of the referenced character. + @param [out] width + Width of the bounding box of the referenced character. + @param [out] height + Height of the bounding box of the referenced character. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT characterExtents + ( + [in] long offset, + [in] enum IA2CoordinateType coordType, + [out] long *x, + [out] long *y, + [out] long *width, + [out, retval] long *height + ); + + + /** @brief Returns the number of active non-contiguous selections + @param [out] nSelections + @retval S_OK + */ + [propget] HRESULT nSelections + ( + [out, retval] long *nSelections + ); + + /** @brief Returns the text position for the specified screen position. + + Given a point return the zero-based index of the character under that + point. The same functionality could be achieved by using the bounding + boxes for each character as returned by IAccessibleText::characterExtents. + The method IAccessibleText::offsetAtPoint, however, can be implemented + more efficiently. + + @param [in] x + The position's x value for which to look up the index of the character that + is rendered on to the display at that point. + @param [in] y + The position's y value for which to look up the index of the character that + is rendered on to the display at that point. + @param [in] coordType + Screen coordinates or window coordinates. + @param [out] offset + Index of the character under the given point or -1 if the point + is invalid or there is no character under the point. + @retval S_OK + @retval S_FALSE if nothing to return, [out] value is -1 + + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT offsetAtPoint + ( + [in] long x, + [in] long y, + [in] enum IA2CoordinateType coordType, + [out, retval] long *offset + ); + + /** @brief Returns the character offsets of Nth active text selection + + Returns the 0-based starting and ending offsets of the Nth selection. If the + text is implemented as a tree of text objects with embed characters in higher + levels representing substrings of child text objects, consider the following. + If the starting selection offset is in one of the child text objects, then the + starting offset in the higher level text object would be at the embed character + representing the child text object that contains the starting selection offset. + If the ending selection offset is in one of the child text objects, then the + ending offset in the higher level text object would be just after the embed + character representing the child text object that contains the ending selection + offset. + + For example, if the string "one two three" is implemented as a two text objects, + with a top level text object containing an embed character "one ? three" and a + child text object containing "two" and if the selection is the string "two" then: + <ul> + <li>the startOffset for the "one ? three" object would be 4, matching the embed character and the endOffset would be 5.</li> + <li>the startOffset for the "two" object would be 0, and the endOffset would be 3</li> + </ul> + Selection offsets are that of the character logically following it, e.g. + to the right of it in a left to right language or to the left of it in a right to left language. + @param [in] selectionIndex + Index of selection (0 based). + @param [out] startOffset + 0 based offset of first selected character + @param [out] endOffset + 0 based offset of one past the last selected character. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT selection + ( + [in] long selectionIndex, + [out] long *startOffset, + [out, retval] long *endOffset + ); + + /** @brief Returns the substring between the two given indices. + + The substring starts with the character at startOffset (inclusive) and up to + the character at endOffset (exclusive), if startOffset is less or equal + endOffset. If endOffset is lower than startOffset, the result is the same + as a call with the two arguments being exchanged. + + The whole text can be requested by passing the indices zero and + IAccessibleText::nCharacters. If both indices have the same value, an empty + string is returned. + @param [in] startOffset + Index of the first character to include in the returned string. The valid range + is 0..length. + @param [in] endOffset + Index of the last character to exclude in the returned string. The valid range + is 0..length. + @param [out] text + Returns the substring starting with the character at startOffset (inclusive) + and up to the character at endOffset (exclusive), if startOffset is less than + or equal to endOffset. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note + @li The returned string may be longer than endOffset-startOffset bytes if text + contains multi-byte characters. + @li Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + */ + [propget] HRESULT text + ( + [in] long startOffset, + [in] long endOffset, + [out, retval] BSTR *text + ); + + /** @brief Returns a text portion before the given position. + + Returns the substring of the specified text type that is located before the + given character and does not include it. The result of this method should be + same as a result for IAccessibleText::textAtOffset with a suitably decreased + index value. + + For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete + word that is closest to and located before offset is returned. + + If the index is valid, but no text is found, S_FALSE is returned along with out + values of 0, 0, and a NULL pointer. This would happen for boundary types other + than character when the text consists entirely of whitespace. + + @param [in] offset + Index of the character for which to return the text part before it. The index + character will not be part of the returned string. The valid range is 0..length. + Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + @param [in] boundaryType + The type of the text portion to return. See ::IA2TextBoundaryType for the + complete list. + @param [out] startOffset + 0 based offset of first character. + @param [out] endOffset + 0 based offset of one past the last character. + @param [out] text + Returns the requested text portion. This portion may be empty or invalid when + no appropriate text portion is found or text type is invalid. + @retval S_OK + @retval S_FALSE if the requested boundary type is not implemented, such as + ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; + [out] values are 0s and NULL respectively + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT textBeforeOffset + ( + [in] long offset, + [in] enum IA2TextBoundaryType boundaryType, + [out] long *startOffset, + [out] long *endOffset, + [out, retval] BSTR *text + ); + + /** @brief Returns a text portion after the given position. + + Returns the substring of the specified text type that is located after the + given character and does not include it. The result of this method should be + same as a result for IAccessibleText::textAtOffset with a suitably increased + index value. + + For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete + word that is closest to and located after offset is returned. + + If the index is valid, but no text is found, S_FALSE is returned along with out + values of 0, 0, and a NULL pointer. This would happen for boundary types other + than character when the text consists entirely of whitespace. + + @param [in] offset + Index of the character for which to return the text part after it. The index + character will not be part of the returned string. The valid range is 0..length. + Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + @param [in] boundaryType + The type of the text portion to return. See ::IA2TextBoundaryType for the complete + list. + @param [out] startOffset + 0 based offset of first character. + @param [out] endOffset + 0 based offset of one past the last character. + @param [out] text + Returns the requested text portion. This portion may be empty or invalid when + no appropriate text portion is found or text type is invalid. + @retval S_OK + @retval S_FALSE if the requested boundary type is not implemented, such as + ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; + [out] values are 0s and NULL respectively + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT textAfterOffset + ( + [in] long offset, + [in] enum IA2TextBoundaryType boundaryType, + [out] long *startOffset, + [out] long *endOffset, + [out, retval] BSTR *text + ); + + /** @brief Returns a text portion that spans the given position. + + Returns the substring defined by the specified boundary type at the specified + offset. Refer to IA2TextBoundaryType for more details. + + For the word boundary type the returned string will contain the word at the + offset if the offset is inside a word and will contain the word before the + offset if the offset is not inside a word. All offsets from the first to the + last characters of a word are considered inside the word. Boundary types of + sentence and paragraph should exhibit similar behavior. + + If the index is valid, but no text is found, S_FALSE is returned along with out + values of 0, 0, and a NULL pointer. This would happen for boundary types other + than character when the text consists entirely of whitespace. + + @param [in] offset + Index of the character for which to return the text part it belongs to. The valid + range is 0..length. + Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + @param [in] boundaryType + The type of the text portion to return. See ::IA2TextBoundaryType for the complete + list. + @param [out] startOffset + 0 based offset of first character. + @param [out] endOffset + 0 based offset of one past the last character. + @param [out] text + Returns the requested text portion. This portion may be empty or invalid when + no appropriate text portion is found or text type is invalid. + @retval S_OK + @retval S_FALSE if the requested boundary type is not implemented, such as + ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return; + [out] values are 0s and NULL respectively + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT textAtOffset + ( + [in] long offset, + [in] enum IA2TextBoundaryType boundaryType, + [out] long *startOffset, + [out] long *endOffset, + [out, retval] BSTR *text + ); + + /** @brief Unselects a range of text. + @param [in] selectionIndex + Index of selection to remove (0 based). + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT removeSelection + ( + [in] long selectionIndex + ); + + /** @brief Sets the position of the caret. + + The caret position/offset is that of the character logically following it, + e.g. to the right of it in a left to right language. + + Setting the caret position may or may not alter the current selection. A + change of the selection is notified to the accessibility event listeners with + an ::IA2_EVENT_TEXT_SELECTION_CHANGED event. + + When the new caret position differs from the old one (which, of course, is the + standard case) this is notified to the accessibility event listeners with an + ::IA2_EVENT_TEXT_CARET_MOVED event. + @param [in] offset + The new index of the caret. This caret is actually placed to the left side of + the character with that index. An index of 0 places the caret so that the next + insertion goes before the first character. An index of IAccessibleText::nCharacters + leads to insertion after the last character. Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + @retval S_OK + @retval E_FAIL if the caret cannot be set + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT setCaretOffset + ( + [in] long offset + ); + + /** @brief Changes the bounds of an existing selection. + @param [in] selectionIndex + Index of selection to change (0 based) + @param [in] startOffset + New starting offset (0 based) + @param [in] endOffset + New ending offset (0 based) - the offset of the character just past the last character of the selection. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + */ + HRESULT setSelection + ( + [in] long selectionIndex, + [in] long startOffset, + [in] long endOffset + ); + + /** @brief Returns total number of characters. + + Note that this may be different than the total number of bytes required to store the + text, if the text contains multi-byte characters. + @param [out] nCharacters + @retval S_OK + */ + [propget] HRESULT nCharacters + ( + [out, retval] long *nCharacters + ); + + /** @brief Makes a specific part of string visible on screen. + @param [in] startIndex + 0 based character offset. + @param [in] endIndex + 0 based character offset - the offset of the character just past the last character of the string. + @param [in] scrollType + Defines where the object should be placed on the screen. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + */ + HRESULT scrollSubstringTo + ( + [in] long startIndex, + [in] long endIndex, + [in] enum IA2ScrollType scrollType + ); + + /** @brief Moves the top left of a substring to a specified location. + + @param [in] startIndex + 0 based character offset. + @param [in] endIndex + 0 based character offset - the offset of the character just past the last character of the string. + @param [in] coordinateType + Specifies whether the coordinates are relative to the screen or the parent object. + @param [in] x + Defines the x coordinate. + @param [in] y + Defines the y coordinate. + @retval S_OK + @retval S_FALSE if the object is already at the specified location. + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleText methods. + */ + HRESULT scrollSubstringToPoint + ( + [in] long startIndex, + [in] long endIndex, + [in] enum IA2CoordinateType coordinateType, + [in] long x, + [in] long y + ); + + /** @brief Returns any inserted text. + + Provided for use by the ::IA2_EVENT_TEXT_INSERTED and ::IA2_EVENT_TEXT_UPDATED + event handlers. + + This data is only guaranteed to be valid while the thread notifying the event + continues. Once the handler has returned, the validity of the data depends on + how the server manages the life cycle of its objects. Also, note that the server + may have different life cycle management strategies for controls depending on + whether or not a control manages its children. Lists, trees, and tables can have + a large number of children and thus it's possible that the child objects for those + controls would only be created as needed. Servers should document their life cycle + strategy as this will be of interest to assistive technology or script engines + accessing data out of process or from other threads. Servers only need to save the + last inserted block of text and a scope of the entire application is adequate. + + @param [out] newText + The text that was just inserted. + @retval S_OK + @retval S_FALSE If there is nothing to return, the values of IA2TextSegment + struct are set as follows: text = NULL, start = 0, end = 0. + + */ + [propget] HRESULT newText + ( + [out, retval] IA2TextSegment *newText + ); + + /** @brief Returns any removed text. + + Provided for use by the IA2_EVENT_TEXT_REMOVED/UPDATED event handlers. + + This data is only guaranteed to be valid while the thread notifying the event + continues. Once the handler has returned, the validity of the data depends on + how the server manages the life cycle of its objects. Also, note that the server + may have different life cycle management strategies for controls depending on + whether or not a control manages its children. Lists, trees, and tables can have + a large number of children and thus it's possible that the child objects for those + controls would only be created as needed. Servers should document their life cycle + strategy as this will be of interest to assistive technology or script engines + accessing data out of process or from other threads. Servers only need to save the + last removed block of text and a scope of the entire application is adequate. + + @param [out] oldText + The text that was just removed. + @retval S_OK + @retval S_FALSE If there is nothing to return, the values of IA2TextSegment + struct are set as follows: text = NULL, start = 0, end = 0. + */ + [propget] HRESULT oldText + ( + [out, retval] IA2TextSegment *oldText + ); + +} +/************************************************************************* + * + * File Name (AccessibleText2.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + + +/** @brief This interface gives read-only access to text. + + The %IAccessibleText2 interface extends the functionality of the + %IAccessibleText interface. +*/ +[object, uuid(9690A9CC-5C80-4DF5-852E-2D5AE4189A54)] +interface IAccessibleText2 : IAccessibleText +{ + + /** @brief Returns the range and of the specified set of attributes. + + Return the range (start and end offsets) and text attributes that correspond + to the given attributes filter at the given offset. + + @param [in] offset + The offset at which to search for the attributes specified in the filter. + @param [in] filter + The requested attribute names. The filter format is "attribute1, attribute2". + @param [out] startOffset + The starting (0-based) offset of the text containing the specified attributes. + @param [out] endOffset + The (0-based) offset one past the last character of the text containing the + specified attributes. + @param [out] attributeValues + The values of the requested attributes. + @retval S_OK + @retval S_FALSE if nothing to return, [out] values are -1, -1, NULL respectively. + @retval E_INVALIDARG if bad [in] passed. + */ + [propget] HRESULT attributeRange + ( + [in] long offset, + [in] BSTR filter, + [out] long *startOffset, + [out] long *endOffset, + [out, retval] BSTR *attributeValues + ); + +} +/************************************************************************* + * + * File Name (AccessibleEditableText.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2012 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + +/** @brief This interface provides clipboard capability to text objects. + + This interface is typically used in conjunction with the IAccessibleText + interface and complements that interface with the additional capability of + clipboard operations. Note that even a read only text object can support + the copy capability so this interface is not limited to editable objects. + + The substrings used with this interface are specified as follows: + If startOffset is less than endOffset, the substring starts with the + character at startOffset and ends with the character just before endOffset. + If endOffset is lower than startOffset, the result is the same as a call + with the two arguments exchanged. The whole text can be defined by passing + the indices zero and IAccessibleText::nCharacters. If both indices have the + same value, an empty string is defined. + + Refer to the @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about a special offset constant that can be used in %IAccessibleEditableText methods. +*/ +[object, uuid(A59AA09A-7011-4b65-939D-32B1FB5547E3)] +interface IAccessibleEditableText : IUnknown +{ + + /** @brief Copies the text range into the clipboard. + + The selection is set to the specified offsets and then selection is copied into + the system clipboard. + + @param [in] startOffset + Start index of the text to moved into the clipboard. + The valid range is 0..length. + @param [in] endOffset + End index of the text to moved into the clipboard. + The valid range is 0..length. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleEditableText + methods. + @deprecated This function is available via the application's GUI. + */ + HRESULT copyText + ( + [in] long startOffset, + [in] long endOffset + ); + + /** @brief Deletes a range of text. + + The text between and including the two given indices is deleted + from the text represented by this object. + + @param [in] startOffset + Start index of the text to be deleted. + The valid range is 0..length. + @param [in] endOffset + End index of the text to be deleted. + The valid range is 0..length. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleEditableText + methods. + */ + HRESULT deleteText + ( + [in] long startOffset, + [in] long endOffset + ); + + /** @brief Inserts text at the specified position. + + The specified string is inserted at the given index into the text + represented by this object. + + @param [in] offset + Index at which to insert the text. + The valid range is 0..length. + Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleEditableText + methods. + @param [in] text + Text that is inserted. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT insertText + ( + [in] long offset, + [in] BSTR *text + ); + + /** @brief Deletes a range of text and copies it to the clipboard. + + The selection is set to the specified offsets, the selection is then copied into + the system clipboard, and then the selection is deleted. + + @param [in] startOffset + Start index of the text to be deleted. + The valid range is 0..length. + @param [in] endOffset + End index of the text to be deleted. + The valid range is 0..length. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleEditableText + methods. + @deprecated This function is available via the application's GUI. + */ + HRESULT cutText + ( + [in] long startOffset, + [in] long endOffset + ); + + /** @brief Pastes content from the clipboard. + + Any existing selection is removed, the clipboard content is then pasted into + this object's text at the given offset. This method is similar to the insertText + method. If the index is not valid the system clipboard content is not inserted. The + behavior is the same as when Ctrl+V is used, i.e. the pasted contents are not + necessarily plain text. + + @param [in] offset + Index at which to insert the content from the system clipboard into + the text represented by this object. + The valid range is 0..length. + Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleEditableText + methods. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @deprecated This function is available via the application's GUI. + */ + HRESULT pasteText + ( + [in] long offset + ); + + /** @brief Replaces text. + + The text between the two given indices is replaced by the specified + replacement string. This method is equivalent to calling first + IAccessibleEditableText::deleteText with the two indices and then + calling IAccessibleEditableText::insertText with the replacement text + at the start index. + + @param [in] startOffset + Start index of the text to be replaced. + The valid range is 0..length. + @param [in] endOffset + End index of the text to be replaced. + The valid range is 0..length. + @param [in] text + The Text that replaces the text between the given indices. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleEditableText + methods. + */ + HRESULT replaceText + ( + [in] long startOffset, + [in] long endOffset, + [in] BSTR *text + ); + + /** @brief Replaces the attributes of a text range by the given set of attributes. + + Sets the attributes for the text between the two given indices. The old + attributes are replaced by the new list of attributes. + + @param [in] startOffset + Start index of the text whose attributes are modified. + The valid range is 0..length. + @param [in] endOffset + End index of the text whose attributes are modified. + The valid range is 0..length. + @param [in] attributes + Set of attributes that replaces the old list of attributes of + the specified text portion. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + @note Refer to @ref _specialOffsets + "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods" + for information about special offsets that can be used in %IAccessibleEditableText + methods. + */ + HRESULT setAttributes + ( + [in] long startOffset, + [in] long endOffset, + [in] BSTR *attributes + ); +} + +/************************************************************************* + * + * File Name (AccessibleHyperlink.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + +/** @brief This interface represents hyperlinks. + + This interface represents a hyperlink associated with a single substring + of text or single non-text object. Non-text objects can have either a + single link or a collection of links such as when the non-text object is + an image map. + + Linked objects and anchors are implementation dependent. This interface is derived + from IAccessibleAction. IAccessibleAction::nActions is one greater than the + maximum value for the indices used with the methods of this interface. + + Furthermore, the object that implements this interface has to be connected + implicitly or explicitly with an object that implements IAccessibleText. + IAccessibleHyperlink::startIndex and IAccessibleHyperlink::endIndex are + indices with respect to the text exposed by IAccessibleText. + + This interface provides access to a single object which can have multiple actions. + An example is an image map which is an image with multiple links each of which is + associated with a separate non-overlapping area of the image. This interface could + also be applied to other kinds of objects with multiple actions such as "smart tags" + which are objects, typically strings, which have multiple actions such as + "Activate URI", "Bookmark URI", etc. + + An interesting use case is an image map where each area is associated with multiple + actions, e.g. an image map of smart tags. In this case you would have to implement + two levels of accessible hyperlinks. The first level hyperlinks would only implement + anchor and anchorTarget. The anchors would all reference the image object. The + anchorTargets would reference the second level accessible hyperlink objects. None + of the IAccessibleAction methods would be implemented on the first level hyperlink + objects. The second level hyperlink objects would implement the IAccessibleAction + methods. Their anchors would also reference the image object and their anchorTargets + would reference URLs or the objects that would be activated. + + This use case demonstrates that in some cases there is no need for IAccessibleHyperlink + to derive from IAccessibleAction. As a result it may be removed in a later version of + the IDL and it is suggested that implementations should not rely on the inheritance. + +*/ +[object, uuid(01C20F2B-3DD2-400f-949F-AD00BDAB1D41)] +interface IAccessibleHyperlink : IAccessibleAction +{ + + /** @brief Returns an object that represents the link anchor, as appropriate + for the link at the specified index. + @param [in] index + A 0 based index identifies the anchor when, as in the case of an image map, + there is more than one link represented by this object. The valid maximal + index is indicated by IAccessibleAction::nActions. + @param [out] anchor + This is an implementation dependent value. For example, for a text link this + method could return the substring of the containing string where the substring + is overridden with link behavior, and for an image link this method could return + an IUnknown VARIANT for IAccessibleImage. See the section about + @ref _variants "VARIANTs" for additional information. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT anchor + ( + [in] long index, + [out, retval] VARIANT *anchor + ); + + /** @brief Returns an object representing the target of the link, as appropriate + for the link at the specified index. + @param [in] index + A 0 based index identifies the anchor when, as in the case of an image map, + there is more than one link represented by this object. The valid maximal + index is indicated by IAccessibleAction::nActions. + @param [out] anchorTarget + This is an implementation dependent value. For example this method could + return a BSTR VARIANT of the URI. Alternatively this method could return an + IUnknown VARIANT of a COM interface representing a target object to be + activated when the link is activated. See the section about + @ref _variants "VARIANTs" for additional information. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT anchorTarget + ( + [in] long index, + [out, retval] VARIANT *anchorTarget + ); + + /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink starts. + + The returned value is related to the IAccessibleText interface of the object that + owns this hyperlink. + @param [out] index + @retval S_OK + */ + [propget] HRESULT startIndex + ( + [out, retval] long *index + ); + + /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink ends. + + The returned value is related to the IAccessibleText interface of the object that + owns this hyperlink. The character at the index is not part of the hypertext. + @param [out] index + @retval S_OK + */ + [propget] HRESULT endIndex + ( + [out, retval] long *index + ); + + /** @brief Returns whether the target object referenced by this link is still valid. + + This is a volatile state that may change without sending an appropriate event. + Returns TRUE if the referenced target is still valid and FALSE otherwise. + + This has also been used to indicate whether or not the URI of the anchorTarget + is malformed. + + @param [out] valid + If false, one or more of the object's links are invalid. + If true, all of the object's links are valid. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is FALSE + @note This method is not being used, is deprecated, and should not be implemented or + used. It is likely that this method will be removed in a later version of the IDL. + */ + [propget] HRESULT valid + ( + [out, retval] boolean *valid + ); +} +/************************************************************************* + * + * File Name (AccessibleHypertext.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + + +/** @brief This interface exposes information about hypertext in a document. + + The %IAccessibleHypertext interface is the main interface to expose + hyperlinks in a document, typically a text document, that are used + to reference other documents. A typical implementation is to implement + this interface on the smallest text object such as a paragraph of text. +*/ +[object, uuid(6B4F8BBF-F1F2-418a-B35E-A195BC4103B9)] +interface IAccessibleHypertext : IAccessibleText +{ + + /** @brief Returns the number of links and link groups contained within this hypertext + paragraph. + @param [out] hyperlinkCount + The number of links and link groups within this hypertext paragraph. + Returns 0 if there is no link. + @retval S_OK + */ + [propget] HRESULT nHyperlinks + ( + [out, retval] long *hyperlinkCount + ); + + /** @brief Returns the specified link. + + The returned IAccessibleHyperlink object encapsulates the hyperlink and + provides several kinds of information describing it. + @param [in] index + This 0 based index specifies the hyperlink to return. + @param [out] hyperlink + If the given index is valid, i.e. lies in the interval from 0 to the number + of links minus one, a reference to the specified hyperlink object is returned. + If the index is invalid then a NULL pointer is returned. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT hyperlink + ( + [in] long index, + [out, retval] IAccessibleHyperlink **hyperlink + ); + + /** @brief Returns the index of the hyperlink that is associated with this character index. + + This is the case when a link spans the given character index. + @param [in] charIndex + A 0 based index of the character for which to return the link index. If + IAccessibleText is used to represent the text containing the link, then the + character index is only valid if it is greater than or equal to zero and + lower than the number of characters in the text. + @param [out] hyperlinkIndex + Returns the 0 based index of the hyperlink that is associated with this + character index, or -1 if charIndex is not on a link. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is -1 + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT hyperlinkIndex + ( + [in] long charIndex, + [out, retval] long *hyperlinkIndex + ); + +} +/************************************************************************* + * + * File Name (AccessibleHypertext2.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + + +/** @brief This interface exposes information about hypertext in a document. + + The %IAccessibleHypertext2 interface extends the functinality of the + %IAccessibleHypertext inteface. +*/ +[object, uuid(CF64D89F-8287-4B44-8501-A827453A6077)] +interface IAccessibleHypertext2 : IAccessibleHypertext +{ + + /** @brief Returns the links for this object. + + The returned IAccessibleHyperlink objects encapsulate the hyperlink and + provides several kinds of information describing it. + + @param [out] hyperlinks + This array is allocated by the server. The client must free it with CoTaskMemFree. + @param [out] nHyperlinks + The number of links returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are no links, [out] values are NULL and 0 respectively + */ + [propget] HRESULT hyperlinks + ( + [out, size_is(,*nHyperlinks)] IAccessibleHyperlink ***hyperlinks, + [out, retval] long *nHyperlinks + ); + +} +/************************************************************************* + * + * File Name (AccessibleTable.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + + +/** @brief This interface gives access to a two-dimensional table. + + Typically all accessible objects that represent cells or cell-clusters of a table + will be at the same time children of the table. In this case IAccessible2::indexInParent + will return the child index which then can be used when calling IAccessibleTable::rowIndex + and IAccessibleTable::columnIndex. + + However, in some cases that kind of implementation will not be possible. When + the table cells are not direct children of a table, the object representing + the cell can define a "table-cell-index" object attribute identifying the 0 + based table cell index. This object attribute is obtained by parsing the + attribute string returned by IAccessible2::attributes. The "table-cell-index" + attribute can be used just like a child index of the typical case. ATs should + first test for the presence of the "table-cell-index" attribute and if it is not + present then IAccessible2::indexInParent can be used as in the typical case + where cells are direct children of the table. + + The range of valid coordinates for this interface are implementation dependent. + However, that range includes at least the intervals from the from the first row + or column with the index 0 up to the last (but not including) used row or column + as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns. + + Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell + rather than this interface. +*/ +[object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)] +interface IAccessibleTable : IUnknown +{ + + /** @brief Returns the accessible object at the specified row and column in + the table. This object could be an IAccessible or an IAccessible2. + @param [in] row + The 0 based row index for which to retrieve the cell. + @param [in] column + The 0 based column index for which to retrieve the cell. + @param [out] accessible + If both row and column index are valid then the corresponding accessible + object is returned that represents the requested cell regardless of whether + the cell is currently visible (on the screen). + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is NULL + */ + [propget] HRESULT accessibleAt + ( + [in] long row, + [in] long column, + [out, retval] IUnknown **accessible + ); + + /** @brief Returns the caption for the table. The returned object could be + an IAccessible or an IAccessible2. + @param [out] accessible + If the table has a caption then a reference to it is returned, else a NULL + pointer is returned. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT caption + ( + [out, retval] IUnknown **accessible + ); + + /** @brief Translates the given row and column indexes into the corresponding cell index. + @param [in] rowIndex + 0 based row index for the cell. + @param [in] columnIndex + 0 based column index for the cell. + @param [out] cellIndex + Returns the 0 based index of the cell at the specified row and column indexes. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is 0 + @note The returned value is not necessarily a child index of the immediate parent. + In cases where the table cells are not direct children of the table the index + is actually the cell index, i.e. conceptually it's an index into a one dimensional + array of cells laid out in row order. + */ + [propget] HRESULT childIndex + ( + [in] long rowIndex, + [in] long columnIndex, + [out, retval] long *cellIndex + ); + + /** @brief Returns the description text of the specified column in the table. + @param [in] column + The 0 based index of the column for which to retrieve the description. + @param [out] description + Returns the description text of the specified column in the table if such a + description exists. Otherwise a NULL pointer is returned. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @retval E_INVALIDARG if bad [in] passed, [out] value is NULL + */ + [propget] HRESULT columnDescription + ( + [in] long column, + [out, retval] BSTR *description + ); + + /** @brief Returns the number of columns occupied by the accessible object + at the specified row and column in the table. + + The result is greater than 1 if the specified cell spans multiple columns. + @param [in] row + 0 based row index of the accessible for which to return the column extent. + @param [in] column + 0 based column index of the accessible for which to return the column extent. + @param [out] nColumnsSpanned + Returns the 1 based column extent of the specified cell. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is 0 + */ + [propget] HRESULT columnExtentAt + ( + [in] long row, + [in] long column, + [out, retval] long *nColumnsSpanned + ); + + /** @brief Returns the column headers as an %IAccessibleTable object. + + Content and size of the returned table are implementation dependent. + @param [out] accessibleTable + The column header + @param [out] startingRowIndex + The 0 based row index where the header starts, usually 0. + @retval S_OK + @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively + */ + [propget] HRESULT columnHeader + ( + [out] IAccessibleTable **accessibleTable, + [out, retval] long *startingRowIndex + ); + + /** @brief Translates the given cell index into the corresponding column index. + @param [in] cellIndex + 0 based index of the cell in the parent or closest ancestor table. Typically this + is the value returned from IAccessible2::indexInParent, but in the case where the + table cells are not direct children of the table this is the cell index specified + by the "table-cell-index" object attribute obtained from parsing the attributes + string returned by calling IAccessible2::attributes on the cell object. + @param [out] columnIndex + Returns the 0 based column index of the cell of the specified child or the index of + the first column if the child spans multiple columns. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is 0 + */ + [propget] HRESULT columnIndex + ( + [in] long cellIndex, + [out, retval] long *columnIndex + ); + + /** @brief Returns the total number of columns in table + @param [out] columnCount + Number of columns in table (including columns outside the current viewport) + @retval S_OK + */ + [propget] HRESULT nColumns + ( + [out, retval] long *columnCount + ); + + /** @brief Returns the total number of rows in table + @param [out] rowCount + Number of rows in table (including rows outside the current viewport) + @retval S_OK + */ + [propget] HRESULT nRows + ( + [out, retval] long *rowCount + ); + + /** @brief Returns the total number of selected cells + @param [out] cellCount + Number of cells currently selected + @retval S_OK + */ + [propget] HRESULT nSelectedChildren + ( + [out, retval] long *cellCount + ); + + /** @brief Returns the total number of selected columns + @param [out] columnCount + Number of columns currently selected + @retval S_OK + */ + [propget] HRESULT nSelectedColumns + ( + [out, retval] long *columnCount + ); + + /** @brief Returns the total number of selected rows + @param [out] rowCount + Number of rows currently selected + @retval S_OK + */ + [propget] HRESULT nSelectedRows + ( + [out, retval] long *rowCount + ); + + /** @brief Returns the description text of the specified row in the table. + @param [in] row + The 0 based index of the row for which to retrieve the description. + @param [out] description + Returns the description text of the specified row in the table if such a + description exists. Otherwise a NULL pointer is returned. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @retval E_INVALIDARG if bad [in] passed, [out] value is NULL + */ + [propget] HRESULT rowDescription + ( + [in] long row, + [out, retval] BSTR *description + ); + + /** @brief Returns the number of rows occupied by the accessible object + at the specified row and column in the table. + + The result is greater than 1 if the specified cell spans multiple rows. + @param [in] row + 0 based row index of the accessible for which to return the row extent. + @param [in] column + 0 based column index of the accessible for which to return the row extent. + @param [out] nRowsSpanned + Returns the row extent of the specified cell. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is 0 + */ + [propget] HRESULT rowExtentAt + ( + [in] long row, + [in] long column, + [out, retval] long *nRowsSpanned + ); + + /** @brief Returns the row headers as an %IAccessibleTable object. + + Content and size of the returned table are implementation dependent. + @param [out] accessibleTable + The row header. + @param [out] startingColumnIndex + The 0 based column index where the header starts, usually 0. + @retval S_OK + @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively + */ + [propget] HRESULT rowHeader + ( + [out] IAccessibleTable **accessibleTable, + [out, retval] long *startingColumnIndex + ); + + /** @brief Translates the given cell index into a row index. + @param [in] cellIndex + 0 based index of the cell in the parent or closest ancestor table. Typically this + is the value returned from IAccessible2::indexInParent, but in the case where the + table cells are not direct children of the table this is the cell index specified + by the "table-cell-index" object attribute obtained from parsing the attributes + string returned by calling IAccessible2::attributes on the cell object. + @param [out] rowIndex + 0 based row index + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is 0 + */ + [propget] HRESULT rowIndex + ( + [in] long cellIndex, + [out, retval] long *rowIndex + ); + + /** @brief Returns a list of cell indexes currently selected (0 based). + @param [in] maxChildren + This parameter is ignored. Refer to @ref _arrayConsideration + "Special Consideration when using Arrays" for more details. + @param [out] children + An array of cell indexes of selected cells (each index is 0 based), + allocated by the server. The client must free it with CoTaskMemFree. + @param [out] nChildren + The number of cell indexes returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are none, [out] values are NULL and 0 respectively + */ + [propget] HRESULT selectedChildren + ( + [in] long maxChildren, + [out, size_is(,maxChildren), length_is(,*nChildren)] long **children, + [out, retval] long *nChildren + ); + + /** @brief Returns a list of column indexes currently selected (0 based). + @param [in] maxColumns + This parameter is ignored. Refer to @ref _arrayConsideration + "Special Consideration when using Arrays" for more details. + @param [out] columns + An array of column indexes of selected columns (each index is 0 based), allocated + by the server. The client must free it with CoTaskMemFree. + @param [out] nColumns + The number of column indexes returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are none, [out] values are NULL and 0 respectively + */ + [propget] HRESULT selectedColumns + ( + [in] long maxColumns, + [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns, + [out, retval] long *nColumns + ); + + /** @brief Returns a list of row indexes currently selected (0 based). + @param [in] maxRows + This parameter is ignored. Refer to @ref _arrayConsideration + "Special Consideration when using Arrays" for more details. + @param [out] rows + An array of row indexes of selected rows (each index is 0 based), allocated + by the server. The client must free it with CoTaskMemFree. + @param [out] nRows + The number of row indexes returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are none, [out] values are NULL and 0 respectively + */ + [propget] HRESULT selectedRows + ( + [in] long maxRows, + [out, size_is(,maxRows), length_is(,*nRows)] long **rows, + [out, retval] long *nRows + ); + + /** @brief Returns the summary description of the table. The returned object could be + an IAccessible or an IAccessible2. + @param [out] accessible + Returns a reference to an implementation dependent accessible object + representing the table's summary or a NULL pointer if the table + does not support a summary. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT summary + ( + [out, retval] IUnknown **accessible + ); + + /** @brief Returns a boolean value indicating whether the specified column is + completely selected. + @param [in] column + 0 based index of the column for which to determine whether it is selected. + @param [out] isSelected + Returns TRUE if the specified column is selected completely and FALSE otherwise. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE + */ + [propget] HRESULT isColumnSelected + ( + [in] long column, + [out, retval] boolean *isSelected + ); + + /** @brief Returns a boolean value indicating whether the specified row is completely + selected. + @param [in] row + 0 based index of the row for which to determine whether it is selected. + @param [out] isSelected + Returns TRUE if the specified row is selected completely and FALSE otherwise. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE + */ + [propget] HRESULT isRowSelected + ( + [in] long row, + [out, retval] boolean *isSelected + ); + + /** @brief Returns a boolean value indicating whether the specified cell is selected. + @param [in] row + 0 based index of the row for the cell to determine whether it is selected. + @param [in] column + 0 based index of the column for the cell to determine whether it is selected. + @param [out] isSelected + Returns TRUE if the specified cell is selected and FALSE otherwise. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE + */ + [propget] HRESULT isSelected + ( + [in] long row, + [in] long column, + [out, retval] boolean *isSelected + ); + + /** @brief Selects a row and unselects all previously selected rows. + @param [in] row + 0 based index of the row to be selected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT selectRow + ( + [in] long row + ); + + /** @brief Selects a column and unselects all previously selected columns. + @param [in] column + 0 based index of the column to be selected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT selectColumn + ( + [in] long column + ); + + /** @brief Unselects one row, leaving other selected rows selected (if any). + @param [in] row + 0 based index of the row to be unselected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT unselectRow + ( + [in] long row + ); + + /** @brief Unselects one column, leaving other selected columns selected (if any). + @param [in] column + 0 based index of the column to be unselected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT unselectColumn + ( + [in] long column + ); + + /** @brief Given a cell index, gets the row and column indexes and extents of a cell + and whether or not it is selected. + + This is a convenience function. It is not mandatory to implement it. + @param [in] index + 0 based index of this cell in the table. + @param [out] row + 0 based row index. + @param [out] column + 0 based column index. + @param [out] rowExtents + Number of cells spanned by this cell in this row. + @param [out] columnExtents + Number of cells spanned by this cell in this column. + @param [out] isSelected + Indicates if the specified cell is selected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively + */ + [propget] HRESULT rowColumnExtentsAtIndex + ( + [in] long index, + [out] long *row, + [out] long *column, + [out] long *rowExtents, + [out] long *columnExtents, + [out, retval] boolean *isSelected + ); + + /** @brief Returns the type and extents describing how a table changed. + + Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler. + + This data is only guaranteed to be valid while the thread notifying the event + continues. Once the handler has returned, the validity of the data depends on + how the server manages the life cycle of its objects. Also, note that the server + may have different life cycle management strategies for controls depending on + whether or not a control manages its children. Lists, trees, and tables can have + a large number of children and thus it's possible that the child objects for those + controls would only be created as needed. Servers should document their life cycle + strategy as this will be of interest to assistive technology or script engines + accessing data out of process or from other threads. Servers only need to save the + most recent row and column values associated with the change and a scope of the + entire application is adequate. + + @param [out] modelChange + A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn). + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT modelChange + ( + [out, retval] IA2TableModelChange *modelChange + ); + +} +/************************************************************************* + * + * File Name (AccessibleTable2.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2012 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + + +/** @brief This interface gives access to a two-dimensional table. + + Please also refer to the IAccessibleTableCell interface. + + If you want to support older applications you should also support the + IAccessibleTable inteface. +*/ +[object, uuid(6167f295-06f0-4cdd-a1fa-02e25153d869)] +interface IAccessibleTable2 : IUnknown +{ + + /** @brief Returns the accessible object at the specified row and column in + the table. This object could be an IAccessible or an IAccessible2. + @param [in] row + The 0 based row index for which to retrieve the cell. + @param [in] column + The 0 based column index for which to retrieve the cell. + @param [out] cell + If both row and column index are valid then the corresponding accessible + object is returned that represents the requested cell regardless of whether + the cell is currently visible (on the screen). + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT cellAt + ( + [in] long row, + [in] long column, + [out, retval] IUnknown **cell + ); + + /** @brief Returns the caption for the table. The returned object could be + an IAccessible or an IAccessible2. + @param [out] accessible + If the table has a caption then a reference to it is returned, else a NULL + pointer is returned. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @deprecated use a describedBy relation + */ + [propget] HRESULT caption + ( + [out, retval] IUnknown **accessible + ); + + /** @brief Returns the description text of the specified column in the table. + @param [in] column + The 0 based index of the column for which to retrieve the description. + @param [out] description + Returns the description text of the specified column in the table if such a + description exists. Otherwise a NULL pointer is returned. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT columnDescription + ( + [in] long column, + [out, retval] BSTR *description + ); + + + /** @brief Returns the total number of columns in table + @param [out] columnCount + Number of columns in table (including columns outside the current viewport) + @retval S_OK + */ + [propget] HRESULT nColumns + ( + [out, retval] long *columnCount + ); + + /** @brief Returns the total number of rows in table + @param [out] rowCount + Number of rows in table (including rows outside the current viewport) + @retval S_OK + */ + [propget] HRESULT nRows + ( + [out, retval] long *rowCount + ); + + /** @brief Returns the total number of selected cells + @param [out] cellCount + Number of cells currently selected + @retval S_OK + */ + [propget] HRESULT nSelectedCells + ( + [out, retval] long *cellCount + ); + + /** @brief Returns the total number of selected columns + @param [out] columnCount + Number of columns currently selected + @retval S_OK + */ + [propget] HRESULT nSelectedColumns + ( + [out, retval] long *columnCount + ); + + /** @brief Returns the total number of selected rows + @param [out] rowCount + Number of rows currently selected + @retval S_OK + */ + [propget] HRESULT nSelectedRows + ( + [out, retval] long *rowCount + ); + + /** @brief Returns the description text of the specified row in the table. + @param [in] row + The 0 based index of the row for which to retrieve the description. + @param [out] description + Returns the description text of the specified row in the table if such a + description exists. Otherwise a NULL pointer is returned. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT rowDescription + ( + [in] long row, + [out, retval] BSTR *description + ); + + /** @brief Returns a list of accessibles currently selected. + @param [out] cells + Pointer to an array of references to selected accessibles. The array is + allocated by the server with CoTaskMemAlloc and freed by the client with + CoTaskMemFree. + @param [out] nSelectedCells + The number of accessibles returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are none, [out] values are NULL and 0 respectively + */ + [propget] HRESULT selectedCells + ( + [out, size_is(,*nSelectedCells)] IUnknown ***cells, + [out, retval] long *nSelectedCells + ); + + /** @brief Returns a list of column indexes currently selected (0 based). + @param [out] selectedColumns + A pointer to an array of column indexes of selected columns (each index is + 0 based). The array is allocated by the server with CoTaskMemAlloc and + freed by the client with CoTaskMemFree. + @param [out] nColumns + The number of column indexes returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are none, [out] values are NULL and 0 respectively + */ + [propget] HRESULT selectedColumns + ( + [out, size_is(,*nColumns)] long **selectedColumns, + [out, retval] long *nColumns + ); + + /** @brief Returns a list of row indexes currently selected (0 based). + @param [out] selectedRows + An array of row indexes of selected rows (each index is 0 based). The array + is allocated by the server with CoTaskMemAlloc and freed by the client with + CoTaskMemFree. + @param [out] nRows + The number of row indexes returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there are none, [out] values are NULL and 0 respectively + */ + [propget] HRESULT selectedRows + ( + [out, size_is(,*nRows)] long **selectedRows, + [out, retval] long *nRows + ); + + /** @brief Returns the summary description of the table. The returned object could be + an IAccessible or an IAccessible2. + @param [out] accessible + Returns a reference to an implementation dependent accessible object + representing the table's summary or a NULL pointer if the table + does not support a summary. + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + @deprecated Use the labeledBy relation + */ + [propget] HRESULT summary + ( + [out, retval] IUnknown **accessible + ); + + /** @brief Returns a boolean value indicating whether the specified column is + completely selected. + @param [in] column + 0 based index of the column for which to determine whether it is selected. + @param [out] isSelected + Returns TRUE if the specified column is selected completely and FALSE otherwise. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT isColumnSelected + ( + [in] long column, + [out, retval] boolean *isSelected + ); + + /** @brief Returns a boolean value indicating whether the specified row is completely + selected. + @param [in] row + 0 based index of the row for which to determine whether it is selected. + @param [out] isSelected + Returns TRUE if the specified row is selected completely and FALSE otherwise. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + [propget] HRESULT isRowSelected + ( + [in] long row, + [out, retval] boolean *isSelected + ); + + /** @brief Selects a row and unselects all previously selected rows. + + The behavior should mimic that of the application, but for those applications + which do not have a means in the GUI to select a full row of cells the behavior + should be as follows: First any selected rows in the table are unselected. Then + the entire row of cells for the specified row is selected. If any of the + cells in the selected row span additional rows, the cells in those rows + are also selected. + @param [in] row + 0 based index of the row to be selected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT selectRow + ( + [in] long row + ); + + /** @brief Selects a column and unselects all previously selected columns. + + The behavior should mimic that of the application, but for those applications + which do not have a means in the GUI to select a full column of cells the behavior + should be as follows: First any selected columns in the table are unselected. Then + the entire column of cells for the specified column is selected. If any of the + cells in the selected column span additional columns, the cells in those columns + are also selected. + @param [in] column + 0 based index of the column to be selected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT selectColumn + ( + [in] long column + ); + + /** @brief Unselects one row, leaving other selected rows selected (if any). + + The behavior should mimic that of the application, but for those applications + which do not have a means in the GUI to unselect a full row of cells the + behavior should be as follows: The entire row of cells for the specified + row is unselected. If any of the cells in the selected row span additional + rows, the cells in those rows are also unselected. + @param [in] row + 0 based index of the row to be unselected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT unselectRow + ( + [in] long row + ); + + /** @brief Unselects one column, leaving other selected columns selected (if any). + + The behavior should mimic that of the application, but for those applications + which do not have a means in the GUI to unselect a full column of cells the + behavior should be as follows: The entire column of cells for the specified + column is unselected. If any of the cells in the selected column span additional + columns, the cells in those columns are also unselected. + @param [in] column + 0 based index of the column to be unselected. + @retval S_OK + @retval E_INVALIDARG if bad [in] passed + */ + HRESULT unselectColumn + ( + [in] long column + ); + + /** @brief Returns the type and extents describing how a table changed. + + Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler. + + This data is only guaranteed to be valid while the thread notifying the event + continues. Once the handler has returned, the validity of the data depends on + how the server manages the life cycle of its objects. Also, note that the server + may have different life cycle management strategies for controls depending on + whether or not a control manages its children. Lists, trees, and tables can have + a large number of children and thus it's possible that the child objects for those + controls would only be created as needed. Servers should document their life cycle + strategy as this will be of interest to assistive technology or script engines + accessing data out of process or from other threads. Servers only need to save the + most recent row and column values associated with the change and a scope of the + entire application is adequate. + + @param [out] modelChange + A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn). + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT modelChange + ( + [out, retval] IA2TableModelChange *modelChange + ); + +} +/************************************************************************* + * + * File Name (AccessibleTableCell.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2013 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + +/** @brief This interface gives access to the cells of a two-dimensional table. + + Please also refer to the IAccessibleTable2 interface. + +*/ +[object, uuid(594116B1-C99F-4847-AD06-0A7A86ECE645)] +interface IAccessibleTableCell : IUnknown +{ + + /** @brief Returns the number of columns occupied by this cell accessible. + + The result is greater than 1 if the specified cell spans multiple columns. + @param [out] nColumnsSpanned + Returns the 1 based column extent of the specified cell. + @retval S_OK + */ + [propget] HRESULT columnExtent + ( + [out, retval] long *nColumnsSpanned + ); + + /** @brief Returns the column headers as an array of cell accessibles. + + @param [out] cellAccessibles + Pointer to an array of references to cell accessibles. The array is allocated + by the server. The client must free it with CoTaskMemFree. + @param [out] nColumnHeaderCells + The number of accessibles returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively + */ + [propget] HRESULT columnHeaderCells + ( + [out, size_is(,*nColumnHeaderCells)] IUnknown ***cellAccessibles, + [out, retval] long *nColumnHeaderCells + ); + + /** @brief Translates this cell accessible into the corresponding column index. + + @param [out] columnIndex + Returns the 0 based column index of the cell of the specified cell or the index of + the first column if the cell spans multiple columns. + @retval S_OK + */ + [propget] HRESULT columnIndex + ( + [out, retval] long *columnIndex + ); + + /** @brief Returns the number of rows occupied by this cell accessible. + + @param [out] nRowsSpanned + Returns the row extent of the specified cell. + @retval S_OK + */ + [propget] HRESULT rowExtent + ( + [out, retval] long *nRowsSpanned + ); + + /** @brief Returns the row headers as an array of cell accessibles. + + @param [out] cellAccessibles + Pointer to an array of references to cell accessibles. The array is allocated + by the server. The client must free it with CoTaskMemFree. + @param [out] nRowHeaderCells + The number of accessibles returned; the size of the returned array. + @retval S_OK + @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively + */ + [propget] HRESULT rowHeaderCells + ( + [out, size_is(,*nRowHeaderCells)] IUnknown ***cellAccessibles, + [out, retval] long *nRowHeaderCells + ); + + /** @brief Translates this cell accessible into the corresponding row index. + + @param [out] rowIndex + Returns the 0 based row index of the specified cell or the index of + the first row if the cell spans multiple rows. + @retval S_OK + */ + [propget] HRESULT rowIndex + ( + [out, retval] long *rowIndex + ); + + /** @brief Returns a boolean value indicating whether this cell is selected. + + @param [out] isSelected + Returns TRUE if the specified cell is selected and FALSE otherwise. + @retval S_OK + */ + [propget] HRESULT isSelected + ( + [out, retval] boolean *isSelected + ); + + /** @brief Gets the row and column indexes and extents of this cell accessible + and whether or not it is selected. + + This is a convenience function. It is not mandatory to implement it. + @param [out] row + 0 based row index. + @param [out] column + 0 based column index. + @param [out] rowExtents + Number of cells spanned by this cell in this row. + @param [out] columnExtents + Number of cells spanned by this cell in this column. + @param [out] isSelected + Indicates if the specified cell is selected. + @retval S_OK + */ + [propget] HRESULT rowColumnExtents + ( + [out] long *row, + [out] long *column, + [out] long *rowExtents, + [out] long *columnExtents, + [out, retval] boolean *isSelected + ); + + /** @brief Returns a reference to the accessbile of the containing table. + + @param [out] table + Returns a reference to the IUnknown of the containing table. + @retval S_OK + */ + [propget] HRESULT table + ( + [out, retval] IUnknown **table + ); + +} +/************************************************************************* + * + * File Name (AccessibleImage.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + +/** @brief This interface represents images and icons. + + This interface is used for a representation of images like icons on buttons. + %IAccessibleImage only needs to be implemented in certain situations. Some + examples are: + <ol> + <li>The accessible name and description are not enough to fully + describe the image, e.g. when the accessible description is used to define the + behavior of an actionable image and the image itself conveys semantically + significant information. + <li>The user can edit the content that includes an + image and therefore the user needs to be able to review the image's position. + </ol> +*/ +[object, uuid(FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE)] +interface IAccessibleImage : IUnknown +{ + /** @brief Returns the localized description of the image. + @param [out] description + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT description + ( + [out, retval] BSTR *description + ); + + /** @brief Returns the coordinates of the image. + @param [in] coordinateType + Specifies whether the returned coordinates should be relative to the screen or the parent object. + @param [out] x + @param [out] y + @retval S_OK + */ + [propget] HRESULT imagePosition + ( + [in] enum IA2CoordinateType coordinateType, + [out] long *x, + [out, retval] long *y + ); + + /** @brief Returns the size of the image in units specified by parent's coordinate system. + @param [out] height + @param [out] width + @retval S_OK + */ + + [propget] HRESULT imageSize + ( + [out] long *height, + [out, retval] long *width + ); +} +/************************************************************************* + * + * File Name (AccessibleEventID.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + +/** %IAccessible2 specific event constants + + This enum defines the event IDs fired by %IAccessible2 objects. The event IDs + are in addition to those used by MSAA. +*/ +enum IA2EventID { + + /** The change of the number or attributes of actions of an accessible + object is signaled by events of this type. + */ + IA2_EVENT_ACTION_CHANGED = 0x101, + + /** <b>Deprecated.</b> The active descendant of a component has changed. + + Note: This event constant is misspelled and thus is deprecated and will be + removed in a later version. Please use the correctly spelled version which + follows. + */ + IA2_EVENT_ACTIVE_DECENDENT_CHANGED, + + /** The active descendant of a component has changed. The active descendant + is used in objects with transient children. + + Note: Due to the fact that MSAA's WinEvents don't allow the active child index + to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event the manages + descendants scheme can't be used. Instead the active child object has to fire + MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be + added to provide for event specific data to be passed with the event. At that + time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and + IA2_STATE_MANAGES_DESCENDANTS state would be useful. + */ + IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED, + + /** The document wide attributes of the document object have changed. + */ + IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED, + + /** The contents of the document have changed. + */ + IA2_EVENT_DOCUMENT_CONTENT_CHANGED, + + /** The loading of the document has completed. + */ + IA2_EVENT_DOCUMENT_LOAD_COMPLETE, + + /** The loading of the document was interrupted. + */ + IA2_EVENT_DOCUMENT_LOAD_STOPPED, + + /** The document contents are being reloaded. + */ + IA2_EVENT_DOCUMENT_RELOAD, + + /** The ending index of this link within the containing string has changed. + */ + IA2_EVENT_HYPERLINK_END_INDEX_CHANGED, + + /** The number of anchors associated with this hyperlink object has changed. + */ + IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED, + + /** The hyperlink selected state changed from selected to unselected or + from unselected to selected. + */ + IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED, + + /** One of the links associated with the hypertext object has been activated. + */ + IA2_EVENT_HYPERTEXT_LINK_ACTIVATED, + + /** One of the links associated with the hypertext object has been selected. + */ + IA2_EVENT_HYPERTEXT_LINK_SELECTED, + + /** The starting index of this link within the containing string has changed. + */ + IA2_EVENT_HYPERLINK_START_INDEX_CHANGED, + + /** Focus has changed from one hypertext object to another, or focus moved + from a non-hypertext object to a hypertext object, or focus moved from a + hypertext object to a non-hypertext object. + */ + IA2_EVENT_HYPERTEXT_CHANGED, + + /** The number of hyperlinks associated with a hypertext object changed + */ + IA2_EVENT_HYPERTEXT_NLINKS_CHANGED, + + /** An object's attributes changed. + Also see ::IA2_EVENT_TEXT_ATTRIBUTE_CHANGED. + */ + IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED, + + /** A slide changed in a presentation document or a page boundary was + crossed in a word processing document. + */ + IA2_EVENT_PAGE_CHANGED, + + /** The caret moved from one section to the next. + */ + IA2_EVENT_SECTION_CHANGED, + + /** A table caption changed. + */ + IA2_EVENT_TABLE_CAPTION_CHANGED, + + /** A table's column description changed. + */ + IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED, + + /** A table's column header changed. + */ + IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED, + + /** A table's data changed. + */ + IA2_EVENT_TABLE_MODEL_CHANGED, + + /** A table's row description changed. + */ + IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED, + + /** A table's row header changed. + */ + IA2_EVENT_TABLE_ROW_HEADER_CHANGED, + + /** A table's summary changed. + */ + IA2_EVENT_TABLE_SUMMARY_CHANGED, + + /** A text object's attributes changed. + Also see ::IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED. + */ + IA2_EVENT_TEXT_ATTRIBUTE_CHANGED, + + /** The caret has moved to a new position. + */ + IA2_EVENT_TEXT_CARET_MOVED, + + /** <b>Deprecated.</b> This event is equivalent to ::IA2_EVENT_TEXT_UPDATED. + */ + IA2_EVENT_TEXT_CHANGED, + + /** The caret moved from one column to the next. + */ + IA2_EVENT_TEXT_COLUMN_CHANGED, + + /** Text was inserted. + */ + IA2_EVENT_TEXT_INSERTED, + + /** Text was removed. + */ + IA2_EVENT_TEXT_REMOVED, + + /** This event indicates general text changes, i.e. changes to text that are + exposed through the IAccessibleText interface. For compatibility with ATK/AT-SPI + which does not have an equivalent event, servers can alternatively fire + ::IA2_EVENT_TEXT_REMOVED and ::IA2_EVENT_TEXT_INSERTED. + */ + IA2_EVENT_TEXT_UPDATED, + + /** The text selection changed. Later versions of Microsoft development environments + have an equivalent event identified, EVENT_OBJECT_TEXTSELECTIONCHANGED. Servers + should use that if it is available and use IA2_EVENT_TEXT_SELECTION_CHANGED otherwise. + Clients should be prepared to respond to either event. + + */ + IA2_EVENT_TEXT_SELECTION_CHANGED, + + /** A visible data event indicates the change of the visual appearance + of an accessible object. This includes for example most of the + attributes available via the IAccessibleComponent interface. + */ + IA2_EVENT_VISIBLE_DATA_CHANGED + +}; +/************************************************************************* + * + * File Name (AccessibleApplication.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2010 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + + +/** @brief This interface gives access to the application's name and version information. + + This interface provides the AT with the information it needs to differentiate + this application from other applications, from other versions of this + application, or from other versions of this application running on different + versions of an accessibility bridge or accessibility toolkit. + + Servers implementing IAccessible2 should provide access to the %IAccessibleApplication + interface via QueryService from any object so that ATs can easily determine specific + information about the application such as its name or version. +*/ +[object, uuid(D49DED83-5B25-43F4-9B95-93B44595979E)] +interface IAccessibleApplication : IUnknown +{ + + /** @brief Returns the application name. + @param [out] name + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT appName + ( + [out, retval] BSTR *name + ); + + /** @brief Returns the application version. + @param [out] version + The version string must not contain levels when it is know beforehand that + this information will never require a change in a client's behavior. + For example, use "3.6.0" rather than "3.6.0.v201005131500". + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT appVersion + ( + [out, retval] BSTR *version + ); + + /** @brief Returns the toolkit/bridge name. + @param [out] name + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT toolkitName + ( + [out, retval] BSTR *name + ); + + /** @brief Returns the toolkit/bridge version. + @param [out] version + The version string must not contain levels when it is know beforehand that + this information will never require a change in a client's behavior. + For example, use "3.6.0" rather than "3.6.0.v201005131500". + @retval S_OK + @retval S_FALSE if there is nothing to return, [out] value is NULL + */ + [propget] HRESULT toolkitVersion + ( + [out, retval] BSTR *version + ); + +} + +/************************************************************************* + * + * File Name (AccessibleDocument.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2013 Linux Foundation + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + + + + + +/** @brief This interface represents documents. + + This interface is used for a representation of documents. +*/ +[object, uuid(C48C7FCF-4AB5-4056-AFA6-902D6E1D1149)] +interface IAccessibleDocument : IUnknown +{ + /** @brief Returns the most recently used anchor target within a document. + + A document's most recently targeted in-page anchor is returned. A typical use + of this method is to fetch the anchor target within an HTML document. In this + case anchor targets are those which have been defined with the <a> tag. + + @param [out] accessible + @retval S_OK + @retval S_FALSE if there are no existing valid anchor targets, [out] value is NULL. + */ + [propget] HRESULT anchorTarget + ( + [out, retval] IUnknown **accessible + ); + +} +/************************************************************************* + * + * File Name (IA2TypeLibrary.idl) + * + * IAccessible2 IDL Specification + * + * Copyright (c) 2007, 2012 Linux Foundation + * Copyright (c) 2006 IBM Corporation + * Copyright (c) 2000, 2006 Sun Microsystems, Inc. + * All rights reserved. + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the Linux Foundation nor the names of its + * contributors may be used to endorse or promote products + * derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This BSD License conforms to the Open Source Initiative "Simplified + * BSD License" as published at: + * http://www.opensource.org/licenses/bsd-license.php + * + * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 + * mark may be used in accordance with the Linux Foundation Trademark + * Policy to indicate compliance with the IAccessible2 specification. + * + ************************************************************************/ + +// This is not a standalone file. It is to be appended to the end of the +// merged IDL file. + +cpp_quote("") +cpp_quote("// Type Library Definitions") +cpp_quote("") + +[ + uuid(CE3F726E-D1D3-44FE-B995-FF1DB3B48B2B), + helpstring("IAccessible2 Type Library"), + version(1.3), + hidden +] + +library IAccessible2Lib +{ + importlib ("stdole2.tlb"); + importlib ("oleacc.dll"); + interface IAccessible2; + interface IAccessible2_2; + interface IAccessibleAction; + interface IAccessibleApplication; + interface IAccessibleComponent; + interface IAccessibleDocument; + interface IAccessibleEditableText; + interface IAccessibleHyperlink; + interface IAccessibleHypertext; + interface IAccessibleHypertext2; + interface IAccessibleImage; + interface IAccessibleRelation; + interface IAccessibleTable; + interface IAccessibleTable2; + interface IAccessibleTableCell; + interface IAccessibleText; + interface IAccessibleText2; + interface IAccessibleValue; + enum IA2CoordinateType; + enum IA2EventID; + enum IA2Role; + enum IA2ScrollType; + enum IA2States; + enum IA2TableModelChangeType; + enum IA2TextBoundaryType; + enum IA2TextSpecialOffsets; +} |