Bug 1751217 Part 3: Make HDR-capable macOS screens report 30 pixelDepth. r=mstange
[gecko.git] / other-licenses / ia2 / AccessibleTable.idl
blob24df659e1a1cef39c119171c5a805da21f88fa3e
1 /*************************************************************************
3 * File Name (AccessibleTable.idl)
4 *
5 * IAccessible2 IDL Specification
6 *
7 * Copyright (c) 2007, 2013 Linux Foundation
8 * Copyright (c) 2006 IBM Corporation
9 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
10 * All rights reserved.
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above
21 * copyright notice, this list of conditions and the following
22 * disclaimer in the documentation and/or other materials
23 * provided with the distribution.
25 * 3. Neither the name of the Linux Foundation nor the names of its
26 * contributors may be used to endorse or promote products
27 * derived from this software without specific prior written
28 * permission.
30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
31 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
32 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
33 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
35 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
36 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
37 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
40 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
41 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
42 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44 * This BSD License conforms to the Open Source Initiative "Simplified
45 * BSD License" as published at:
46 * http://www.opensource.org/licenses/bsd-license.php
48 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
49 * mark may be used in accordance with the Linux Foundation Trademark
50 * Policy to indicate compliance with the IAccessible2 specification.
52 ************************************************************************/
54 import "objidl.idl";
55 import "oaidl.idl";
56 import "oleacc.idl";
57 import "Accessible2.idl";
58 import "IA2CommonTypes.idl";
60 /** @brief This interface gives access to a two-dimensional table.
62 Typically all accessible objects that represent cells or cell-clusters of a table
63 will be at the same time children of the table. In this case IAccessible2::indexInParent
64 will return the child index which then can be used when calling IAccessibleTable::rowIndex
65 and IAccessibleTable::columnIndex.
67 However, in some cases that kind of implementation will not be possible. When
68 the table cells are not direct children of a table, the object representing
69 the cell can define a "table-cell-index" object attribute identifying the 0
70 based table cell index. This object attribute is obtained by parsing the
71 attribute string returned by IAccessible2::attributes. The "table-cell-index"
72 attribute can be used just like a child index of the typical case. ATs should
73 first test for the presence of the "table-cell-index" attribute and if it is not
74 present then IAccessible2::indexInParent can be used as in the typical case
75 where cells are direct children of the table.
77 The range of valid coordinates for this interface are implementation dependent.
78 However, that range includes at least the intervals from the from the first row
79 or column with the index 0 up to the last (but not including) used row or column
80 as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns.
82 Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell
83 rather than this interface.
85 [object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)]
86 interface IAccessibleTable : IUnknown
89 /** @brief Returns the accessible object at the specified row and column in
90 the table. This object could be an IAccessible or an IAccessible2.
91 @param [in] row
92 The 0 based row index for which to retrieve the cell.
93 @param [in] column
94 The 0 based column index for which to retrieve the cell.
95 @param [out] accessible
96 If both row and column index are valid then the corresponding accessible
97 object is returned that represents the requested cell regardless of whether
98 the cell is currently visible (on the screen).
99 @retval S_OK
100 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
102 [propget] HRESULT accessibleAt
104 [in] long row,
105 [in] long column,
106 [out, retval] IUnknown **accessible
109 /** @brief Returns the caption for the table. The returned object could be
110 an IAccessible or an IAccessible2.
111 @param [out] accessible
112 If the table has a caption then a reference to it is returned, else a NULL
113 pointer is returned.
114 @retval S_OK
115 @retval S_FALSE if there is nothing to return, [out] value is NULL
117 [propget] HRESULT caption
119 [out, retval] IUnknown **accessible
122 /** @brief Translates the given row and column indexes into the corresponding cell index.
123 @param [in] rowIndex
124 0 based row index for the cell.
125 @param [in] columnIndex
126 0 based column index for the cell.
127 @param [out] cellIndex
128 Returns the 0 based index of the cell at the specified row and column indexes.
129 @retval S_OK
130 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
131 @note The returned value is not necessarily a child index of the immediate parent.
132 In cases where the table cells are not direct children of the table the index
133 is actually the cell index, i.e. conceptually it's an index into a one dimensional
134 array of cells laid out in row order.
136 [propget] HRESULT childIndex
138 [in] long rowIndex,
139 [in] long columnIndex,
140 [out, retval] long *cellIndex
143 /** @brief Returns the description text of the specified column in the table.
144 @param [in] column
145 The 0 based index of the column for which to retrieve the description.
146 @param [out] description
147 Returns the description text of the specified column in the table if such a
148 description exists. Otherwise a NULL pointer is returned.
149 @retval S_OK
150 @retval S_FALSE if there is nothing to return, [out] value is NULL
151 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
153 [propget] HRESULT columnDescription
155 [in] long column,
156 [out, retval] BSTR *description
159 /** @brief Returns the number of columns occupied by the accessible object
160 at the specified row and column in the table.
162 The result is greater than 1 if the specified cell spans multiple columns.
163 @param [in] row
164 0 based row index of the accessible for which to return the column extent.
165 @param [in] column
166 0 based column index of the accessible for which to return the column extent.
167 @param [out] nColumnsSpanned
168 Returns the 1 based column extent of the specified cell.
169 @retval S_OK
170 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
172 [propget] HRESULT columnExtentAt
174 [in] long row,
175 [in] long column,
176 [out, retval] long *nColumnsSpanned
179 /** @brief Returns the column headers as an %IAccessibleTable object.
181 Content and size of the returned table are implementation dependent.
182 @param [out] accessibleTable
183 The column header
184 @param [out] startingRowIndex
185 The 0 based row index where the header starts, usually 0.
186 @retval S_OK
187 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
189 [propget] HRESULT columnHeader
191 [out] IAccessibleTable **accessibleTable,
192 [out, retval] long *startingRowIndex
195 /** @brief Translates the given cell index into the corresponding column index.
196 @param [in] cellIndex
197 0 based index of the cell in the parent or closest ancestor table. Typically this
198 is the value returned from IAccessible2::indexInParent, but in the case where the
199 table cells are not direct children of the table this is the cell index specified
200 by the "table-cell-index" object attribute obtained from parsing the attributes
201 string returned by calling IAccessible2::attributes on the cell object.
202 @param [out] columnIndex
203 Returns the 0 based column index of the cell of the specified child or the index of
204 the first column if the child spans multiple columns.
205 @retval S_OK
206 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
208 [propget] HRESULT columnIndex
210 [in] long cellIndex,
211 [out, retval] long *columnIndex
214 /** @brief Returns the total number of columns in table
215 @param [out] columnCount
216 Number of columns in table (including columns outside the current viewport)
217 @retval S_OK
219 [propget] HRESULT nColumns
221 [out, retval] long *columnCount
224 /** @brief Returns the total number of rows in table
225 @param [out] rowCount
226 Number of rows in table (including rows outside the current viewport)
227 @retval S_OK
229 [propget] HRESULT nRows
231 [out, retval] long *rowCount
234 /** @brief Returns the total number of selected cells
235 @param [out] cellCount
236 Number of cells currently selected
237 @retval S_OK
239 [propget] HRESULT nSelectedChildren
241 [out, retval] long *cellCount
244 /** @brief Returns the total number of selected columns
245 @param [out] columnCount
246 Number of columns currently selected
247 @retval S_OK
249 [propget] HRESULT nSelectedColumns
251 [out, retval] long *columnCount
254 /** @brief Returns the total number of selected rows
255 @param [out] rowCount
256 Number of rows currently selected
257 @retval S_OK
259 [propget] HRESULT nSelectedRows
261 [out, retval] long *rowCount
264 /** @brief Returns the description text of the specified row in the table.
265 @param [in] row
266 The 0 based index of the row for which to retrieve the description.
267 @param [out] description
268 Returns the description text of the specified row in the table if such a
269 description exists. Otherwise a NULL pointer is returned.
270 @retval S_OK
271 @retval S_FALSE if there is nothing to return, [out] value is NULL
272 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
274 [propget] HRESULT rowDescription
276 [in] long row,
277 [out, retval] BSTR *description
280 /** @brief Returns the number of rows occupied by the accessible object
281 at the specified row and column in the table.
283 The result is greater than 1 if the specified cell spans multiple rows.
284 @param [in] row
285 0 based row index of the accessible for which to return the row extent.
286 @param [in] column
287 0 based column index of the accessible for which to return the row extent.
288 @param [out] nRowsSpanned
289 Returns the row extent of the specified cell.
290 @retval S_OK
291 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
293 [propget] HRESULT rowExtentAt
295 [in] long row,
296 [in] long column,
297 [out, retval] long *nRowsSpanned
300 /** @brief Returns the row headers as an %IAccessibleTable object.
302 Content and size of the returned table are implementation dependent.
303 @param [out] accessibleTable
304 The row header.
305 @param [out] startingColumnIndex
306 The 0 based column index where the header starts, usually 0.
307 @retval S_OK
308 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
310 [propget] HRESULT rowHeader
312 [out] IAccessibleTable **accessibleTable,
313 [out, retval] long *startingColumnIndex
316 /** @brief Translates the given cell index into a row index.
317 @param [in] cellIndex
318 0 based index of the cell in the parent or closest ancestor table. Typically this
319 is the value returned from IAccessible2::indexInParent, but in the case where the
320 table cells are not direct children of the table this is the cell index specified
321 by the "table-cell-index" object attribute obtained from parsing the attributes
322 string returned by calling IAccessible2::attributes on the cell object.
323 @param [out] rowIndex
324 0 based row index
325 @retval S_OK
326 @retval E_INVALIDARG if bad [in] passed, [out] value is 0
328 [propget] HRESULT rowIndex
330 [in] long cellIndex,
331 [out, retval] long *rowIndex
334 /** @brief Returns a list of cell indexes currently selected (0 based).
335 @param [in] maxChildren
336 This parameter is ignored. Refer to @ref _arrayConsideration
337 "Special Consideration when using Arrays" for more details.
338 @param [out] children
339 An array of cell indexes of selected cells (each index is 0 based),
340 allocated by the server. The client must free it with CoTaskMemFree.
341 @param [out] nChildren
342 The number of cell indexes returned; the size of the returned array.
343 @retval S_OK
344 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
346 [propget] HRESULT selectedChildren
348 [in] long maxChildren,
349 [out, size_is(,maxChildren), length_is(,*nChildren)] long **children,
350 [out, retval] long *nChildren
353 /** @brief Returns a list of column indexes currently selected (0 based).
354 @param [in] maxColumns
355 This parameter is ignored. Refer to @ref _arrayConsideration
356 "Special Consideration when using Arrays" for more details.
357 @param [out] columns
358 An array of column indexes of selected columns (each index is 0 based), allocated
359 by the server. The client must free it with CoTaskMemFree.
360 @param [out] nColumns
361 The number of column indexes returned; the size of the returned array.
362 @retval S_OK
363 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
365 [propget] HRESULT selectedColumns
367 [in] long maxColumns,
368 [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns,
369 [out, retval] long *nColumns
372 /** @brief Returns a list of row indexes currently selected (0 based).
373 @param [in] maxRows
374 This parameter is ignored. Refer to @ref _arrayConsideration
375 "Special Consideration when using Arrays" for more details.
376 @param [out] rows
377 An array of row indexes of selected rows (each index is 0 based), allocated
378 by the server. The client must free it with CoTaskMemFree.
379 @param [out] nRows
380 The number of row indexes returned; the size of the returned array.
381 @retval S_OK
382 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
384 [propget] HRESULT selectedRows
386 [in] long maxRows,
387 [out, size_is(,maxRows), length_is(,*nRows)] long **rows,
388 [out, retval] long *nRows
391 /** @brief Returns the summary description of the table. The returned object could be
392 an IAccessible or an IAccessible2.
393 @param [out] accessible
394 Returns a reference to an implementation dependent accessible object
395 representing the table's summary or a NULL pointer if the table
396 does not support a summary.
397 @retval S_OK
398 @retval S_FALSE if there is nothing to return, [out] value is NULL
400 [propget] HRESULT summary
402 [out, retval] IUnknown **accessible
405 /** @brief Returns a boolean value indicating whether the specified column is
406 completely selected.
407 @param [in] column
408 0 based index of the column for which to determine whether it is selected.
409 @param [out] isSelected
410 Returns TRUE if the specified column is selected completely and FALSE otherwise.
411 @retval S_OK
412 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
414 [propget] HRESULT isColumnSelected
416 [in] long column,
417 [out, retval] boolean *isSelected
420 /** @brief Returns a boolean value indicating whether the specified row is completely
421 selected.
422 @param [in] row
423 0 based index of the row for which to determine whether it is selected.
424 @param [out] isSelected
425 Returns TRUE if the specified row is selected completely and FALSE otherwise.
426 @retval S_OK
427 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
429 [propget] HRESULT isRowSelected
431 [in] long row,
432 [out, retval] boolean *isSelected
435 /** @brief Returns a boolean value indicating whether the specified cell is selected.
436 @param [in] row
437 0 based index of the row for the cell to determine whether it is selected.
438 @param [in] column
439 0 based index of the column for the cell to determine whether it is selected.
440 @param [out] isSelected
441 Returns TRUE if the specified cell is selected and FALSE otherwise.
442 @retval S_OK
443 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
445 [propget] HRESULT isSelected
447 [in] long row,
448 [in] long column,
449 [out, retval] boolean *isSelected
452 /** @brief Selects a row and unselects all previously selected rows.
453 @param [in] row
454 0 based index of the row to be selected.
455 @retval S_OK
456 @retval E_INVALIDARG if bad [in] passed
458 HRESULT selectRow
460 [in] long row
463 /** @brief Selects a column and unselects all previously selected columns.
464 @param [in] column
465 0 based index of the column to be selected.
466 @retval S_OK
467 @retval E_INVALIDARG if bad [in] passed
469 HRESULT selectColumn
471 [in] long column
474 /** @brief Unselects one row, leaving other selected rows selected (if any).
475 @param [in] row
476 0 based index of the row to be unselected.
477 @retval S_OK
478 @retval E_INVALIDARG if bad [in] passed
480 HRESULT unselectRow
482 [in] long row
485 /** @brief Unselects one column, leaving other selected columns selected (if any).
486 @param [in] column
487 0 based index of the column to be unselected.
488 @retval S_OK
489 @retval E_INVALIDARG if bad [in] passed
491 HRESULT unselectColumn
493 [in] long column
496 /** @brief Given a cell index, gets the row and column indexes and extents of a cell
497 and whether or not it is selected.
499 This is a convenience function. It is not mandatory to implement it.
500 @param [in] index
501 0 based index of this cell in the table.
502 @param [out] row
503 0 based row index.
504 @param [out] column
505 0 based column index.
506 @param [out] rowExtents
507 Number of cells spanned by this cell in this row.
508 @param [out] columnExtents
509 Number of cells spanned by this cell in this column.
510 @param [out] isSelected
511 Indicates if the specified cell is selected.
512 @retval S_OK
513 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively
515 [propget] HRESULT rowColumnExtentsAtIndex
517 [in] long index,
518 [out] long *row,
519 [out] long *column,
520 [out] long *rowExtents,
521 [out] long *columnExtents,
522 [out, retval] boolean *isSelected
525 /** @brief Returns the type and extents describing how a table changed.
527 Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
529 This data is only guaranteed to be valid while the thread notifying the event
530 continues. Once the handler has returned, the validity of the data depends on
531 how the server manages the life cycle of its objects. Also, note that the server
532 may have different life cycle management strategies for controls depending on
533 whether or not a control manages its children. Lists, trees, and tables can have
534 a large number of children and thus it's possible that the child objects for those
535 controls would only be created as needed. Servers should document their life cycle
536 strategy as this will be of interest to assistive technology or script engines
537 accessing data out of process or from other threads. Servers only need to save the
538 most recent row and column values associated with the change and a scope of the
539 entire application is adequate.
541 @param [out] modelChange
542 A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
543 @retval S_OK
544 @retval S_FALSE if there is nothing to return, [out] value is NULL
546 [propget] HRESULT modelChange
548 [out, retval] IA2TableModelChange *modelChange