Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/accesskit/include/accesskit.h
9903 views
1
/**
2
* Copyright 2023 The AccessKit Authors. All rights reserved.
3
* Licensed under the Apache License, Version 2.0 (found in
4
* the LICENSE-APACHE file) or the MIT license (found in
5
* the LICENSE-MIT file), at your option.
6
*/
7
8
#ifndef ACCESSKIT_H
9
#define ACCESSKIT_H
10
11
#include <stdarg.h>
12
#include <stdbool.h>
13
#include <stddef.h>
14
#include <stdint.h>
15
#include <stdlib.h>
16
#ifdef _WIN32
17
#include <windows.h>
18
#endif
19
20
/**
21
* An action to be taken on an accessibility node.
22
*/
23
enum accesskit_action
24
#ifdef __cplusplus
25
: uint8_t
26
#endif // __cplusplus
27
{
28
/**
29
* Do the equivalent of a single click or tap.
30
*/
31
ACCESSKIT_ACTION_CLICK,
32
ACCESSKIT_ACTION_FOCUS,
33
ACCESSKIT_ACTION_BLUR,
34
ACCESSKIT_ACTION_COLLAPSE,
35
ACCESSKIT_ACTION_EXPAND,
36
/**
37
* Requires [`ActionRequest::data`] to be set to [`ActionData::CustomAction`].
38
*/
39
ACCESSKIT_ACTION_CUSTOM_ACTION,
40
/**
41
* Decrement a numeric value by one step.
42
*/
43
ACCESSKIT_ACTION_DECREMENT,
44
/**
45
* Increment a numeric value by one step.
46
*/
47
ACCESSKIT_ACTION_INCREMENT,
48
ACCESSKIT_ACTION_HIDE_TOOLTIP,
49
ACCESSKIT_ACTION_SHOW_TOOLTIP,
50
/**
51
* Delete any selected text in the control's text value and
52
* insert the specified value in its place, like when typing or pasting.
53
* Requires [`ActionRequest::data`] to be set to [`ActionData::Value`].
54
*/
55
ACCESSKIT_ACTION_REPLACE_SELECTED_TEXT,
56
/**
57
* Scroll down by the specified unit.
58
*/
59
ACCESSKIT_ACTION_SCROLL_DOWN,
60
/**
61
* Scroll left by the specified unit.
62
*/
63
ACCESSKIT_ACTION_SCROLL_LEFT,
64
/**
65
* Scroll right by the specified unit.
66
*/
67
ACCESSKIT_ACTION_SCROLL_RIGHT,
68
/**
69
* Scroll up by the specified unit.
70
*/
71
ACCESSKIT_ACTION_SCROLL_UP,
72
/**
73
* Scroll any scrollable containers to make the target node visible.
74
* Optionally set [`ActionRequest::data`] to [`ActionData::ScrollHint`].
75
*/
76
ACCESSKIT_ACTION_SCROLL_INTO_VIEW,
77
/**
78
* Scroll the given object to a specified point in the tree's container
79
* (e.g. window). Requires [`ActionRequest::data`] to be set to
80
* [`ActionData::ScrollToPoint`].
81
*/
82
ACCESSKIT_ACTION_SCROLL_TO_POINT,
83
/**
84
* Requires [`ActionRequest::data`] to be set to
85
* [`ActionData::SetScrollOffset`].
86
*/
87
ACCESSKIT_ACTION_SET_SCROLL_OFFSET,
88
/**
89
* Requires [`ActionRequest::data`] to be set to
90
* [`ActionData::SetTextSelection`].
91
*/
92
ACCESSKIT_ACTION_SET_TEXT_SELECTION,
93
/**
94
* Don't focus this node, but set it as the sequential focus navigation
95
* starting point, so that pressing Tab moves to the next element
96
* following this one, for example.
97
*/
98
ACCESSKIT_ACTION_SET_SEQUENTIAL_FOCUS_NAVIGATION_STARTING_POINT,
99
/**
100
* Replace the value of the control with the specified value and
101
* reset the selection, if applicable. Requires [`ActionRequest::data`]
102
* to be set to [`ActionData::Value`] or [`ActionData::NumericValue`].
103
*/
104
ACCESSKIT_ACTION_SET_VALUE,
105
ACCESSKIT_ACTION_SHOW_CONTEXT_MENU,
106
};
107
#ifndef __cplusplus
108
typedef uint8_t accesskit_action;
109
#endif // __cplusplus
110
111
enum accesskit_aria_current
112
#ifdef __cplusplus
113
: uint8_t
114
#endif // __cplusplus
115
{
116
ACCESSKIT_ARIA_CURRENT_FALSE,
117
ACCESSKIT_ARIA_CURRENT_TRUE,
118
ACCESSKIT_ARIA_CURRENT_PAGE,
119
ACCESSKIT_ARIA_CURRENT_STEP,
120
ACCESSKIT_ARIA_CURRENT_LOCATION,
121
ACCESSKIT_ARIA_CURRENT_DATE,
122
ACCESSKIT_ARIA_CURRENT_TIME,
123
};
124
#ifndef __cplusplus
125
typedef uint8_t accesskit_aria_current;
126
#endif // __cplusplus
127
128
enum accesskit_auto_complete
129
#ifdef __cplusplus
130
: uint8_t
131
#endif // __cplusplus
132
{
133
ACCESSKIT_AUTO_COMPLETE_INLINE,
134
ACCESSKIT_AUTO_COMPLETE_LIST,
135
ACCESSKIT_AUTO_COMPLETE_BOTH,
136
};
137
#ifndef __cplusplus
138
typedef uint8_t accesskit_auto_complete;
139
#endif // __cplusplus
140
141
enum accesskit_has_popup
142
#ifdef __cplusplus
143
: uint8_t
144
#endif // __cplusplus
145
{
146
ACCESSKIT_HAS_POPUP_MENU,
147
ACCESSKIT_HAS_POPUP_LISTBOX,
148
ACCESSKIT_HAS_POPUP_TREE,
149
ACCESSKIT_HAS_POPUP_GRID,
150
ACCESSKIT_HAS_POPUP_DIALOG,
151
};
152
#ifndef __cplusplus
153
typedef uint8_t accesskit_has_popup;
154
#endif // __cplusplus
155
156
/**
157
* Indicates if a form control has invalid input or if a web DOM element has an
158
* [`aria-invalid`] attribute.
159
*
160
* [`aria-invalid`]: https://www.w3.org/TR/wai-aria-1.1/#aria-invalid
161
*/
162
enum accesskit_invalid
163
#ifdef __cplusplus
164
: uint8_t
165
#endif // __cplusplus
166
{
167
ACCESSKIT_INVALID_TRUE,
168
ACCESSKIT_INVALID_GRAMMAR,
169
ACCESSKIT_INVALID_SPELLING,
170
};
171
#ifndef __cplusplus
172
typedef uint8_t accesskit_invalid;
173
#endif // __cplusplus
174
175
enum accesskit_list_style
176
#ifdef __cplusplus
177
: uint8_t
178
#endif // __cplusplus
179
{
180
ACCESSKIT_LIST_STYLE_CIRCLE,
181
ACCESSKIT_LIST_STYLE_DISC,
182
ACCESSKIT_LIST_STYLE_IMAGE,
183
ACCESSKIT_LIST_STYLE_NUMERIC,
184
ACCESSKIT_LIST_STYLE_SQUARE,
185
/**
186
* Language specific ordering (alpha, roman, cjk-ideographic, etc...)
187
*/
188
ACCESSKIT_LIST_STYLE_OTHER,
189
};
190
#ifndef __cplusplus
191
typedef uint8_t accesskit_list_style;
192
#endif // __cplusplus
193
194
enum accesskit_live
195
#ifdef __cplusplus
196
: uint8_t
197
#endif // __cplusplus
198
{
199
ACCESSKIT_LIVE_OFF,
200
ACCESSKIT_LIVE_POLITE,
201
ACCESSKIT_LIVE_ASSERTIVE,
202
};
203
#ifndef __cplusplus
204
typedef uint8_t accesskit_live;
205
#endif // __cplusplus
206
207
enum accesskit_orientation
208
#ifdef __cplusplus
209
: uint8_t
210
#endif // __cplusplus
211
{
212
/**
213
* E.g. most toolbars and separators.
214
*/
215
ACCESSKIT_ORIENTATION_HORIZONTAL,
216
/**
217
* E.g. menu or combo box.
218
*/
219
ACCESSKIT_ORIENTATION_VERTICAL,
220
};
221
#ifndef __cplusplus
222
typedef uint8_t accesskit_orientation;
223
#endif // __cplusplus
224
225
/**
226
* The type of an accessibility node.
227
*
228
* The majority of these roles come from the ARIA specification. Reference
229
* the latest draft for proper usage.
230
*
231
* Like the AccessKit schema as a whole, this list is largely taken
232
* from Chromium. However, unlike Chromium's alphabetized list, this list
233
* is ordered roughly by expected usage frequency (with the notable exception
234
* of [`Role::Unknown`]). This is more efficient in serialization formats
235
* where integers use a variable-length encoding.
236
*/
237
enum accesskit_role
238
#ifdef __cplusplus
239
: uint8_t
240
#endif // __cplusplus
241
{
242
ACCESSKIT_ROLE_UNKNOWN,
243
ACCESSKIT_ROLE_TEXT_RUN,
244
ACCESSKIT_ROLE_CELL,
245
ACCESSKIT_ROLE_LABEL,
246
ACCESSKIT_ROLE_IMAGE,
247
ACCESSKIT_ROLE_LINK,
248
ACCESSKIT_ROLE_ROW,
249
ACCESSKIT_ROLE_LIST_ITEM,
250
/**
251
* Contains the bullet, number, or other marker for a list item.
252
*/
253
ACCESSKIT_ROLE_LIST_MARKER,
254
ACCESSKIT_ROLE_TREE_ITEM,
255
ACCESSKIT_ROLE_LIST_BOX_OPTION,
256
ACCESSKIT_ROLE_MENU_ITEM,
257
ACCESSKIT_ROLE_MENU_LIST_OPTION,
258
ACCESSKIT_ROLE_PARAGRAPH,
259
/**
260
* A generic container that should be ignored by assistive technologies
261
* and filtered out of platform accessibility trees. Equivalent to the ARIA
262
* `none` or `presentation` role, or to an HTML `div` with no role.
263
*/
264
ACCESSKIT_ROLE_GENERIC_CONTAINER,
265
ACCESSKIT_ROLE_CHECK_BOX,
266
ACCESSKIT_ROLE_RADIO_BUTTON,
267
ACCESSKIT_ROLE_TEXT_INPUT,
268
ACCESSKIT_ROLE_BUTTON,
269
ACCESSKIT_ROLE_DEFAULT_BUTTON,
270
ACCESSKIT_ROLE_PANE,
271
ACCESSKIT_ROLE_ROW_HEADER,
272
ACCESSKIT_ROLE_COLUMN_HEADER,
273
ACCESSKIT_ROLE_ROW_GROUP,
274
ACCESSKIT_ROLE_LIST,
275
ACCESSKIT_ROLE_TABLE,
276
ACCESSKIT_ROLE_LAYOUT_TABLE_CELL,
277
ACCESSKIT_ROLE_LAYOUT_TABLE_ROW,
278
ACCESSKIT_ROLE_LAYOUT_TABLE,
279
ACCESSKIT_ROLE_SWITCH,
280
ACCESSKIT_ROLE_MENU,
281
ACCESSKIT_ROLE_MULTILINE_TEXT_INPUT,
282
ACCESSKIT_ROLE_SEARCH_INPUT,
283
ACCESSKIT_ROLE_DATE_INPUT,
284
ACCESSKIT_ROLE_DATE_TIME_INPUT,
285
ACCESSKIT_ROLE_WEEK_INPUT,
286
ACCESSKIT_ROLE_MONTH_INPUT,
287
ACCESSKIT_ROLE_TIME_INPUT,
288
ACCESSKIT_ROLE_EMAIL_INPUT,
289
ACCESSKIT_ROLE_NUMBER_INPUT,
290
ACCESSKIT_ROLE_PASSWORD_INPUT,
291
ACCESSKIT_ROLE_PHONE_NUMBER_INPUT,
292
ACCESSKIT_ROLE_URL_INPUT,
293
ACCESSKIT_ROLE_ABBR,
294
ACCESSKIT_ROLE_ALERT,
295
ACCESSKIT_ROLE_ALERT_DIALOG,
296
ACCESSKIT_ROLE_APPLICATION,
297
ACCESSKIT_ROLE_ARTICLE,
298
ACCESSKIT_ROLE_AUDIO,
299
ACCESSKIT_ROLE_BANNER,
300
ACCESSKIT_ROLE_BLOCKQUOTE,
301
ACCESSKIT_ROLE_CANVAS,
302
ACCESSKIT_ROLE_CAPTION,
303
ACCESSKIT_ROLE_CARET,
304
ACCESSKIT_ROLE_CODE,
305
ACCESSKIT_ROLE_COLOR_WELL,
306
ACCESSKIT_ROLE_COMBO_BOX,
307
ACCESSKIT_ROLE_EDITABLE_COMBO_BOX,
308
ACCESSKIT_ROLE_COMPLEMENTARY,
309
ACCESSKIT_ROLE_COMMENT,
310
ACCESSKIT_ROLE_CONTENT_DELETION,
311
ACCESSKIT_ROLE_CONTENT_INSERTION,
312
ACCESSKIT_ROLE_CONTENT_INFO,
313
ACCESSKIT_ROLE_DEFINITION,
314
ACCESSKIT_ROLE_DESCRIPTION_LIST,
315
ACCESSKIT_ROLE_DESCRIPTION_LIST_DETAIL,
316
ACCESSKIT_ROLE_DESCRIPTION_LIST_TERM,
317
ACCESSKIT_ROLE_DETAILS,
318
ACCESSKIT_ROLE_DIALOG,
319
ACCESSKIT_ROLE_DIRECTORY,
320
ACCESSKIT_ROLE_DISCLOSURE_TRIANGLE,
321
ACCESSKIT_ROLE_DOCUMENT,
322
ACCESSKIT_ROLE_EMBEDDED_OBJECT,
323
ACCESSKIT_ROLE_EMPHASIS,
324
ACCESSKIT_ROLE_FEED,
325
ACCESSKIT_ROLE_FIGURE_CAPTION,
326
ACCESSKIT_ROLE_FIGURE,
327
ACCESSKIT_ROLE_FOOTER,
328
ACCESSKIT_ROLE_FOOTER_AS_NON_LANDMARK,
329
ACCESSKIT_ROLE_FORM,
330
ACCESSKIT_ROLE_GRID,
331
ACCESSKIT_ROLE_GROUP,
332
ACCESSKIT_ROLE_HEADER,
333
ACCESSKIT_ROLE_HEADER_AS_NON_LANDMARK,
334
ACCESSKIT_ROLE_HEADING,
335
ACCESSKIT_ROLE_IFRAME,
336
ACCESSKIT_ROLE_IFRAME_PRESENTATIONAL,
337
ACCESSKIT_ROLE_IME_CANDIDATE,
338
ACCESSKIT_ROLE_KEYBOARD,
339
ACCESSKIT_ROLE_LEGEND,
340
ACCESSKIT_ROLE_LINE_BREAK,
341
ACCESSKIT_ROLE_LIST_BOX,
342
ACCESSKIT_ROLE_LOG,
343
ACCESSKIT_ROLE_MAIN,
344
ACCESSKIT_ROLE_MARK,
345
ACCESSKIT_ROLE_MARQUEE,
346
ACCESSKIT_ROLE_MATH,
347
ACCESSKIT_ROLE_MENU_BAR,
348
ACCESSKIT_ROLE_MENU_ITEM_CHECK_BOX,
349
ACCESSKIT_ROLE_MENU_ITEM_RADIO,
350
ACCESSKIT_ROLE_MENU_LIST_POPUP,
351
ACCESSKIT_ROLE_METER,
352
ACCESSKIT_ROLE_NAVIGATION,
353
ACCESSKIT_ROLE_NOTE,
354
ACCESSKIT_ROLE_PLUGIN_OBJECT,
355
ACCESSKIT_ROLE_PORTAL,
356
ACCESSKIT_ROLE_PRE,
357
ACCESSKIT_ROLE_PROGRESS_INDICATOR,
358
ACCESSKIT_ROLE_RADIO_GROUP,
359
ACCESSKIT_ROLE_REGION,
360
ACCESSKIT_ROLE_ROOT_WEB_AREA,
361
ACCESSKIT_ROLE_RUBY,
362
ACCESSKIT_ROLE_RUBY_ANNOTATION,
363
ACCESSKIT_ROLE_SCROLL_BAR,
364
ACCESSKIT_ROLE_SCROLL_VIEW,
365
ACCESSKIT_ROLE_SEARCH,
366
ACCESSKIT_ROLE_SECTION,
367
ACCESSKIT_ROLE_SLIDER,
368
ACCESSKIT_ROLE_SPIN_BUTTON,
369
ACCESSKIT_ROLE_SPLITTER,
370
ACCESSKIT_ROLE_STATUS,
371
ACCESSKIT_ROLE_STRONG,
372
ACCESSKIT_ROLE_SUGGESTION,
373
ACCESSKIT_ROLE_SVG_ROOT,
374
ACCESSKIT_ROLE_TAB,
375
ACCESSKIT_ROLE_TAB_LIST,
376
ACCESSKIT_ROLE_TAB_PANEL,
377
ACCESSKIT_ROLE_TERM,
378
ACCESSKIT_ROLE_TIME,
379
ACCESSKIT_ROLE_TIMER,
380
ACCESSKIT_ROLE_TITLE_BAR,
381
ACCESSKIT_ROLE_TOOLBAR,
382
ACCESSKIT_ROLE_TOOLTIP,
383
ACCESSKIT_ROLE_TREE,
384
ACCESSKIT_ROLE_TREE_GRID,
385
ACCESSKIT_ROLE_VIDEO,
386
ACCESSKIT_ROLE_WEB_VIEW,
387
ACCESSKIT_ROLE_WINDOW,
388
ACCESSKIT_ROLE_PDF_ACTIONABLE_HIGHLIGHT,
389
ACCESSKIT_ROLE_PDF_ROOT,
390
ACCESSKIT_ROLE_GRAPHICS_DOCUMENT,
391
ACCESSKIT_ROLE_GRAPHICS_OBJECT,
392
ACCESSKIT_ROLE_GRAPHICS_SYMBOL,
393
ACCESSKIT_ROLE_DOC_ABSTRACT,
394
ACCESSKIT_ROLE_DOC_ACKNOWLEDGEMENTS,
395
ACCESSKIT_ROLE_DOC_AFTERWORD,
396
ACCESSKIT_ROLE_DOC_APPENDIX,
397
ACCESSKIT_ROLE_DOC_BACK_LINK,
398
ACCESSKIT_ROLE_DOC_BIBLIO_ENTRY,
399
ACCESSKIT_ROLE_DOC_BIBLIOGRAPHY,
400
ACCESSKIT_ROLE_DOC_BIBLIO_REF,
401
ACCESSKIT_ROLE_DOC_CHAPTER,
402
ACCESSKIT_ROLE_DOC_COLOPHON,
403
ACCESSKIT_ROLE_DOC_CONCLUSION,
404
ACCESSKIT_ROLE_DOC_COVER,
405
ACCESSKIT_ROLE_DOC_CREDIT,
406
ACCESSKIT_ROLE_DOC_CREDITS,
407
ACCESSKIT_ROLE_DOC_DEDICATION,
408
ACCESSKIT_ROLE_DOC_ENDNOTE,
409
ACCESSKIT_ROLE_DOC_ENDNOTES,
410
ACCESSKIT_ROLE_DOC_EPIGRAPH,
411
ACCESSKIT_ROLE_DOC_EPILOGUE,
412
ACCESSKIT_ROLE_DOC_ERRATA,
413
ACCESSKIT_ROLE_DOC_EXAMPLE,
414
ACCESSKIT_ROLE_DOC_FOOTNOTE,
415
ACCESSKIT_ROLE_DOC_FOREWORD,
416
ACCESSKIT_ROLE_DOC_GLOSSARY,
417
ACCESSKIT_ROLE_DOC_GLOSS_REF,
418
ACCESSKIT_ROLE_DOC_INDEX,
419
ACCESSKIT_ROLE_DOC_INTRODUCTION,
420
ACCESSKIT_ROLE_DOC_NOTE_REF,
421
ACCESSKIT_ROLE_DOC_NOTICE,
422
ACCESSKIT_ROLE_DOC_PAGE_BREAK,
423
ACCESSKIT_ROLE_DOC_PAGE_FOOTER,
424
ACCESSKIT_ROLE_DOC_PAGE_HEADER,
425
ACCESSKIT_ROLE_DOC_PAGE_LIST,
426
ACCESSKIT_ROLE_DOC_PART,
427
ACCESSKIT_ROLE_DOC_PREFACE,
428
ACCESSKIT_ROLE_DOC_PROLOGUE,
429
ACCESSKIT_ROLE_DOC_PULLQUOTE,
430
ACCESSKIT_ROLE_DOC_QNA,
431
ACCESSKIT_ROLE_DOC_SUBTITLE,
432
ACCESSKIT_ROLE_DOC_TIP,
433
ACCESSKIT_ROLE_DOC_TOC,
434
/**
435
* Behaves similar to an ARIA grid but is primarily used by Chromium's
436
* `TableView` and its subclasses, so they can be exposed correctly
437
* on certain platforms.
438
*/
439
ACCESSKIT_ROLE_LIST_GRID,
440
/**
441
* This is just like a multi-line document, but signals that assistive
442
* technologies should implement behavior specific to a VT-100-style
443
* terminal.
444
*/
445
ACCESSKIT_ROLE_TERMINAL,
446
};
447
#ifndef __cplusplus
448
typedef uint8_t accesskit_role;
449
#endif // __cplusplus
450
451
/**
452
* A suggestion about where the node being scrolled into view should be
453
* positioned relative to the edges of the scrollable container.
454
*/
455
enum accesskit_scroll_hint
456
#ifdef __cplusplus
457
: uint8_t
458
#endif // __cplusplus
459
{
460
ACCESSKIT_SCROLL_HINT_TOP_LEFT,
461
ACCESSKIT_SCROLL_HINT_BOTTOM_RIGHT,
462
ACCESSKIT_SCROLL_HINT_TOP_EDGE,
463
ACCESSKIT_SCROLL_HINT_BOTTOM_EDGE,
464
ACCESSKIT_SCROLL_HINT_LEFT_EDGE,
465
ACCESSKIT_SCROLL_HINT_RIGHT_EDGE,
466
};
467
#ifndef __cplusplus
468
typedef uint8_t accesskit_scroll_hint;
469
#endif // __cplusplus
470
471
/**
472
* The amount by which to scroll in the direction specified by one of the
473
* `Scroll` actions.
474
*/
475
enum accesskit_scroll_unit
476
#ifdef __cplusplus
477
: uint8_t
478
#endif // __cplusplus
479
{
480
/**
481
* A single item of a list, line of text (for vertical scrolling),
482
* character (for horizontal scrolling), or an approximation of
483
* one of these.
484
*/
485
ACCESSKIT_SCROLL_UNIT_ITEM,
486
/**
487
* The amount of content that fits in the viewport.
488
*/
489
ACCESSKIT_SCROLL_UNIT_PAGE,
490
};
491
#ifndef __cplusplus
492
typedef uint8_t accesskit_scroll_unit;
493
#endif // __cplusplus
494
495
enum accesskit_sort_direction
496
#ifdef __cplusplus
497
: uint8_t
498
#endif // __cplusplus
499
{
500
ACCESSKIT_SORT_DIRECTION_ASCENDING,
501
ACCESSKIT_SORT_DIRECTION_DESCENDING,
502
ACCESSKIT_SORT_DIRECTION_OTHER,
503
};
504
#ifndef __cplusplus
505
typedef uint8_t accesskit_sort_direction;
506
#endif // __cplusplus
507
508
enum accesskit_text_align
509
#ifdef __cplusplus
510
: uint8_t
511
#endif // __cplusplus
512
{
513
ACCESSKIT_TEXT_ALIGN_LEFT,
514
ACCESSKIT_TEXT_ALIGN_RIGHT,
515
ACCESSKIT_TEXT_ALIGN_CENTER,
516
ACCESSKIT_TEXT_ALIGN_JUSTIFY,
517
};
518
#ifndef __cplusplus
519
typedef uint8_t accesskit_text_align;
520
#endif // __cplusplus
521
522
enum accesskit_text_decoration
523
#ifdef __cplusplus
524
: uint8_t
525
#endif // __cplusplus
526
{
527
ACCESSKIT_TEXT_DECORATION_SOLID,
528
ACCESSKIT_TEXT_DECORATION_DOTTED,
529
ACCESSKIT_TEXT_DECORATION_DASHED,
530
ACCESSKIT_TEXT_DECORATION_DOUBLE,
531
ACCESSKIT_TEXT_DECORATION_WAVY,
532
};
533
#ifndef __cplusplus
534
typedef uint8_t accesskit_text_decoration;
535
#endif // __cplusplus
536
537
enum accesskit_text_direction
538
#ifdef __cplusplus
539
: uint8_t
540
#endif // __cplusplus
541
{
542
ACCESSKIT_TEXT_DIRECTION_LEFT_TO_RIGHT,
543
ACCESSKIT_TEXT_DIRECTION_RIGHT_TO_LEFT,
544
ACCESSKIT_TEXT_DIRECTION_TOP_TO_BOTTOM,
545
ACCESSKIT_TEXT_DIRECTION_BOTTOM_TO_TOP,
546
};
547
#ifndef __cplusplus
548
typedef uint8_t accesskit_text_direction;
549
#endif // __cplusplus
550
551
enum accesskit_toggled
552
#ifdef __cplusplus
553
: uint8_t
554
#endif // __cplusplus
555
{
556
ACCESSKIT_TOGGLED_FALSE,
557
ACCESSKIT_TOGGLED_TRUE,
558
ACCESSKIT_TOGGLED_MIXED,
559
};
560
#ifndef __cplusplus
561
typedef uint8_t accesskit_toggled;
562
#endif // __cplusplus
563
564
enum accesskit_vertical_offset
565
#ifdef __cplusplus
566
: uint8_t
567
#endif // __cplusplus
568
{
569
ACCESSKIT_VERTICAL_OFFSET_SUBSCRIPT,
570
ACCESSKIT_VERTICAL_OFFSET_SUPERSCRIPT,
571
};
572
#ifndef __cplusplus
573
typedef uint8_t accesskit_vertical_offset;
574
#endif // __cplusplus
575
576
#if defined(__APPLE__)
577
typedef struct accesskit_macos_adapter accesskit_macos_adapter;
578
#endif
579
580
#if defined(__APPLE__)
581
typedef struct accesskit_macos_queued_events accesskit_macos_queued_events;
582
#endif
583
584
#if defined(__APPLE__)
585
typedef struct accesskit_macos_subclassing_adapter
586
accesskit_macos_subclassing_adapter;
587
#endif
588
589
typedef struct accesskit_node accesskit_node;
590
591
typedef struct accesskit_tree accesskit_tree;
592
593
typedef struct accesskit_tree_update accesskit_tree_update;
594
595
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
596
defined(__NetBSD__) || defined(__OpenBSD__))
597
typedef struct accesskit_unix_adapter accesskit_unix_adapter;
598
#endif
599
600
#if defined(_WIN32)
601
typedef struct accesskit_windows_adapter accesskit_windows_adapter;
602
#endif
603
604
#if defined(_WIN32)
605
typedef struct accesskit_windows_queued_events accesskit_windows_queued_events;
606
#endif
607
608
#if defined(_WIN32)
609
typedef struct accesskit_windows_subclassing_adapter
610
accesskit_windows_subclassing_adapter;
611
#endif
612
613
typedef uint64_t accesskit_node_id;
614
615
typedef struct accesskit_node_ids {
616
size_t length;
617
const accesskit_node_id *values;
618
} accesskit_node_ids;
619
620
/**
621
* Represents an optional value.
622
*
623
* If `has_value` is false, do not read the `value` field.
624
*/
625
typedef struct accesskit_opt_node_id {
626
bool has_value;
627
accesskit_node_id value;
628
} accesskit_opt_node_id;
629
630
/**
631
* Represents an optional value.
632
*
633
* If `has_value` is false, do not read the `value` field.
634
*/
635
typedef struct accesskit_opt_double {
636
bool has_value;
637
double value;
638
} accesskit_opt_double;
639
640
/**
641
* Represents an optional value.
642
*
643
* If `has_value` is false, do not read the `value` field.
644
*/
645
typedef struct accesskit_opt_index {
646
bool has_value;
647
size_t value;
648
} accesskit_opt_index;
649
650
/**
651
* Represents an optional value.
652
*
653
* If `has_value` is false, do not read the `value` field.
654
*/
655
typedef struct accesskit_opt_color {
656
bool has_value;
657
uint32_t value;
658
} accesskit_opt_color;
659
660
/**
661
* Represents an optional value.
662
*
663
* If `has_value` is false, do not read the `value` field.
664
*/
665
typedef struct accesskit_opt_text_decoration {
666
bool has_value;
667
accesskit_text_decoration value;
668
} accesskit_opt_text_decoration;
669
670
typedef struct accesskit_lengths {
671
size_t length;
672
const uint8_t *values;
673
} accesskit_lengths;
674
675
typedef struct accesskit_opt_coords {
676
bool has_value;
677
size_t length;
678
const float *values;
679
} accesskit_opt_coords;
680
681
/**
682
* Represents an optional value.
683
*
684
* If `has_value` is false, do not read the `value` field.
685
*/
686
typedef struct accesskit_opt_bool {
687
bool has_value;
688
bool value;
689
} accesskit_opt_bool;
690
691
/**
692
* Represents an optional value.
693
*
694
* If `has_value` is false, do not read the `value` field.
695
*/
696
typedef struct accesskit_opt_invalid {
697
bool has_value;
698
accesskit_invalid value;
699
} accesskit_opt_invalid;
700
701
/**
702
* Represents an optional value.
703
*
704
* If `has_value` is false, do not read the `value` field.
705
*/
706
typedef struct accesskit_opt_toggled {
707
bool has_value;
708
accesskit_toggled value;
709
} accesskit_opt_toggled;
710
711
/**
712
* Represents an optional value.
713
*
714
* If `has_value` is false, do not read the `value` field.
715
*/
716
typedef struct accesskit_opt_live {
717
bool has_value;
718
accesskit_live value;
719
} accesskit_opt_live;
720
721
/**
722
* Represents an optional value.
723
*
724
* If `has_value` is false, do not read the `value` field.
725
*/
726
typedef struct accesskit_opt_text_direction {
727
bool has_value;
728
accesskit_text_direction value;
729
} accesskit_opt_text_direction;
730
731
/**
732
* Represents an optional value.
733
*
734
* If `has_value` is false, do not read the `value` field.
735
*/
736
typedef struct accesskit_opt_orientation {
737
bool has_value;
738
accesskit_orientation value;
739
} accesskit_opt_orientation;
740
741
/**
742
* Represents an optional value.
743
*
744
* If `has_value` is false, do not read the `value` field.
745
*/
746
typedef struct accesskit_opt_sort_direction {
747
bool has_value;
748
accesskit_sort_direction value;
749
} accesskit_opt_sort_direction;
750
751
/**
752
* Represents an optional value.
753
*
754
* If `has_value` is false, do not read the `value` field.
755
*/
756
typedef struct accesskit_opt_aria_current {
757
bool has_value;
758
accesskit_aria_current value;
759
} accesskit_opt_aria_current;
760
761
/**
762
* Represents an optional value.
763
*
764
* If `has_value` is false, do not read the `value` field.
765
*/
766
typedef struct accesskit_opt_auto_complete {
767
bool has_value;
768
accesskit_auto_complete value;
769
} accesskit_opt_auto_complete;
770
771
/**
772
* Represents an optional value.
773
*
774
* If `has_value` is false, do not read the `value` field.
775
*/
776
typedef struct accesskit_opt_has_popup {
777
bool has_value;
778
accesskit_has_popup value;
779
} accesskit_opt_has_popup;
780
781
/**
782
* Represents an optional value.
783
*
784
* If `has_value` is false, do not read the `value` field.
785
*/
786
typedef struct accesskit_opt_list_style {
787
bool has_value;
788
accesskit_list_style value;
789
} accesskit_opt_list_style;
790
791
/**
792
* Represents an optional value.
793
*
794
* If `has_value` is false, do not read the `value` field.
795
*/
796
typedef struct accesskit_opt_text_align {
797
bool has_value;
798
accesskit_text_align value;
799
} accesskit_opt_text_align;
800
801
/**
802
* Represents an optional value.
803
*
804
* If `has_value` is false, do not read the `value` field.
805
*/
806
typedef struct accesskit_opt_vertical_offset {
807
bool has_value;
808
accesskit_vertical_offset value;
809
} accesskit_opt_vertical_offset;
810
811
/**
812
* A 2D affine transform. Derived from
813
* [kurbo](https://github.com/linebender/kurbo).
814
*/
815
typedef struct accesskit_affine {
816
double _0[6];
817
} accesskit_affine;
818
819
/**
820
* A rectangle. Derived from [kurbo](https://github.com/linebender/kurbo).
821
*/
822
typedef struct accesskit_rect {
823
/**
824
* The minimum x coordinate (left edge).
825
*/
826
double x0;
827
/**
828
* The minimum y coordinate (top edge in y-down spaces).
829
*/
830
double y0;
831
/**
832
* The maximum x coordinate (right edge).
833
*/
834
double x1;
835
/**
836
* The maximum y coordinate (bottom edge in y-down spaces).
837
*/
838
double y1;
839
} accesskit_rect;
840
841
/**
842
* Represents an optional value.
843
*
844
* If `has_value` is false, do not read the `value` field.
845
*/
846
typedef struct accesskit_opt_rect {
847
bool has_value;
848
struct accesskit_rect value;
849
} accesskit_opt_rect;
850
851
typedef struct accesskit_text_position {
852
accesskit_node_id node;
853
size_t character_index;
854
} accesskit_text_position;
855
856
typedef struct accesskit_text_selection {
857
struct accesskit_text_position anchor;
858
struct accesskit_text_position focus;
859
} accesskit_text_selection;
860
861
/**
862
* Represents an optional value.
863
*
864
* If `has_value` is false, do not read the `value` field.
865
*/
866
typedef struct accesskit_opt_text_selection {
867
bool has_value;
868
struct accesskit_text_selection value;
869
} accesskit_opt_text_selection;
870
871
/**
872
* Use `accesskit_custom_action_new` to create this struct. Do not reallocate
873
* `description`.
874
*
875
* When you get this struct, you are responsible for freeing `description`.
876
*/
877
typedef struct accesskit_custom_action {
878
int32_t id;
879
char *description;
880
} accesskit_custom_action;
881
882
typedef struct accesskit_custom_actions {
883
size_t length;
884
struct accesskit_custom_action *values;
885
} accesskit_custom_actions;
886
887
/**
888
* A 2D point. Derived from [kurbo](https://github.com/linebender/kurbo).
889
*/
890
typedef struct accesskit_point {
891
/**
892
* The x coordinate.
893
*/
894
double x;
895
/**
896
* The y coordinate.
897
*/
898
double y;
899
} accesskit_point;
900
901
typedef enum accesskit_action_data_Tag {
902
ACCESSKIT_ACTION_DATA_CUSTOM_ACTION,
903
ACCESSKIT_ACTION_DATA_VALUE,
904
ACCESSKIT_ACTION_DATA_NUMERIC_VALUE,
905
ACCESSKIT_ACTION_DATA_SCROLL_UNIT,
906
/**
907
* Optional suggestion for `ACCESSKIT_ACTION_SCROLL_INTO_VIEW`, specifying
908
* the preferred position of the target node relative to the scrollable
909
* container's viewport.
910
*/
911
ACCESSKIT_ACTION_DATA_SCROLL_HINT,
912
ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT,
913
ACCESSKIT_ACTION_DATA_SET_SCROLL_OFFSET,
914
ACCESSKIT_ACTION_DATA_SET_TEXT_SELECTION,
915
} accesskit_action_data_Tag;
916
917
typedef struct accesskit_action_data {
918
accesskit_action_data_Tag tag;
919
union {
920
struct {
921
int32_t custom_action;
922
};
923
struct {
924
char *value;
925
};
926
struct {
927
double numeric_value;
928
};
929
struct {
930
accesskit_scroll_unit scroll_unit;
931
};
932
struct {
933
accesskit_scroll_hint scroll_hint;
934
};
935
struct {
936
struct accesskit_point scroll_to_point;
937
};
938
struct {
939
struct accesskit_point set_scroll_offset;
940
};
941
struct {
942
struct accesskit_text_selection set_text_selection;
943
};
944
};
945
} accesskit_action_data;
946
947
/**
948
* Represents an optional value.
949
*
950
* If `has_value` is false, do not read the `value` field.
951
*/
952
typedef struct accesskit_opt_action_data {
953
bool has_value;
954
struct accesskit_action_data value;
955
} accesskit_opt_action_data;
956
957
typedef struct accesskit_action_request {
958
accesskit_action action;
959
accesskit_node_id target;
960
struct accesskit_opt_action_data data;
961
} accesskit_action_request;
962
963
/**
964
* A 2D vector. Derived from [kurbo](https://github.com/linebender/kurbo).
965
*
966
* This is intended primarily for a vector in the mathematical sense,
967
* but it can be interpreted as a translation, and converted to and
968
* from a point (vector relative to the origin) and size.
969
*/
970
typedef struct accesskit_vec2 {
971
/**
972
* The x-coordinate.
973
*/
974
double x;
975
/**
976
* The y-coordinate.
977
*/
978
double y;
979
} accesskit_vec2;
980
981
/**
982
* A 2D size. Derived from [kurbo](https://github.com/linebender/kurbo).
983
*/
984
typedef struct accesskit_size {
985
/**
986
* The width.
987
*/
988
double width;
989
/**
990
* The height.
991
*/
992
double height;
993
} accesskit_size;
994
995
/**
996
* Ownership of `request` is transferred to the callback. `request` must
997
* be freed using `accesskit_action_request_free`.
998
*/
999
typedef void (*accesskit_action_handler_callback)(
1000
struct accesskit_action_request *request, void *userdata);
1001
1002
typedef void *accesskit_tree_update_factory_userdata;
1003
1004
/**
1005
* This function can't return a null pointer. Ownership of the returned value
1006
* will be transferred to the caller.
1007
*/
1008
typedef struct accesskit_tree_update *(*accesskit_tree_update_factory)(
1009
accesskit_tree_update_factory_userdata);
1010
1011
typedef struct accesskit_tree_update *(*accesskit_activation_handler_callback)(
1012
void *userdata);
1013
1014
typedef void (*accesskit_deactivation_handler_callback)(void *userdata);
1015
1016
#if defined(_WIN32)
1017
/**
1018
* Represents an optional value.
1019
*
1020
* If `has_value` is false, do not read the `value` field.
1021
*/
1022
typedef struct accesskit_opt_lresult {
1023
bool has_value;
1024
LRESULT value;
1025
} accesskit_opt_lresult;
1026
#endif
1027
1028
#ifdef __cplusplus
1029
extern "C" {
1030
#endif // __cplusplus
1031
1032
accesskit_role accesskit_node_role(const struct accesskit_node *node);
1033
1034
void accesskit_node_set_role(struct accesskit_node *node, accesskit_role value);
1035
1036
bool accesskit_node_supports_action(const struct accesskit_node *node,
1037
accesskit_action action);
1038
1039
void accesskit_node_add_action(struct accesskit_node *node,
1040
accesskit_action action);
1041
1042
void accesskit_node_remove_action(struct accesskit_node *node,
1043
accesskit_action action);
1044
1045
void accesskit_node_clear_actions(struct accesskit_node *node);
1046
1047
/**
1048
* Return whether the specified action is in the set supported on this node's
1049
* direct children in the filtered tree.
1050
*/
1051
bool accesskit_node_child_supports_action(const struct accesskit_node *node,
1052
accesskit_action action);
1053
1054
/**
1055
* Add the specified action to the set supported on this node's direct
1056
* children in the filtered tree.
1057
*/
1058
void accesskit_node_add_child_action(struct accesskit_node *node,
1059
accesskit_action action);
1060
1061
/**
1062
* Remove the specified action from the set supported on this node's direct
1063
* children in the filtered tree.
1064
*/
1065
void accesskit_node_remove_child_action(struct accesskit_node *node,
1066
accesskit_action action);
1067
1068
/**
1069
* Clear the set of actions supported on this node's direct children in the
1070
* filtered tree.
1071
*/
1072
void accesskit_node_clear_child_actions(struct accesskit_node *node);
1073
1074
bool accesskit_node_is_hidden(const struct accesskit_node *node);
1075
1076
void accesskit_node_set_hidden(struct accesskit_node *node);
1077
1078
void accesskit_node_clear_hidden(struct accesskit_node *node);
1079
1080
bool accesskit_node_is_multiselectable(const struct accesskit_node *node);
1081
1082
void accesskit_node_set_multiselectable(struct accesskit_node *node);
1083
1084
void accesskit_node_clear_multiselectable(struct accesskit_node *node);
1085
1086
bool accesskit_node_is_required(const struct accesskit_node *node);
1087
1088
void accesskit_node_set_required(struct accesskit_node *node);
1089
1090
void accesskit_node_clear_required(struct accesskit_node *node);
1091
1092
bool accesskit_node_is_visited(const struct accesskit_node *node);
1093
1094
void accesskit_node_set_visited(struct accesskit_node *node);
1095
1096
void accesskit_node_clear_visited(struct accesskit_node *node);
1097
1098
bool accesskit_node_is_busy(const struct accesskit_node *node);
1099
1100
void accesskit_node_set_busy(struct accesskit_node *node);
1101
1102
void accesskit_node_clear_busy(struct accesskit_node *node);
1103
1104
bool accesskit_node_is_live_atomic(const struct accesskit_node *node);
1105
1106
void accesskit_node_set_live_atomic(struct accesskit_node *node);
1107
1108
void accesskit_node_clear_live_atomic(struct accesskit_node *node);
1109
1110
bool accesskit_node_is_modal(const struct accesskit_node *node);
1111
1112
void accesskit_node_set_modal(struct accesskit_node *node);
1113
1114
void accesskit_node_clear_modal(struct accesskit_node *node);
1115
1116
bool accesskit_node_is_touch_transparent(const struct accesskit_node *node);
1117
1118
void accesskit_node_set_touch_transparent(struct accesskit_node *node);
1119
1120
void accesskit_node_clear_touch_transparent(struct accesskit_node *node);
1121
1122
bool accesskit_node_is_read_only(const struct accesskit_node *node);
1123
1124
void accesskit_node_set_read_only(struct accesskit_node *node);
1125
1126
void accesskit_node_clear_read_only(struct accesskit_node *node);
1127
1128
bool accesskit_node_is_disabled(const struct accesskit_node *node);
1129
1130
void accesskit_node_set_disabled(struct accesskit_node *node);
1131
1132
void accesskit_node_clear_disabled(struct accesskit_node *node);
1133
1134
bool accesskit_node_is_bold(const struct accesskit_node *node);
1135
1136
void accesskit_node_set_bold(struct accesskit_node *node);
1137
1138
void accesskit_node_clear_bold(struct accesskit_node *node);
1139
1140
bool accesskit_node_is_italic(const struct accesskit_node *node);
1141
1142
void accesskit_node_set_italic(struct accesskit_node *node);
1143
1144
void accesskit_node_clear_italic(struct accesskit_node *node);
1145
1146
bool accesskit_node_clips_children(const struct accesskit_node *node);
1147
1148
void accesskit_node_set_clips_children(struct accesskit_node *node);
1149
1150
void accesskit_node_clear_clips_children(struct accesskit_node *node);
1151
1152
bool accesskit_node_is_line_breaking_object(const struct accesskit_node *node);
1153
1154
void accesskit_node_set_is_line_breaking_object(struct accesskit_node *node);
1155
1156
void accesskit_node_clear_is_line_breaking_object(struct accesskit_node *node);
1157
1158
bool accesskit_node_is_page_breaking_object(const struct accesskit_node *node);
1159
1160
void accesskit_node_set_is_page_breaking_object(struct accesskit_node *node);
1161
1162
void accesskit_node_clear_is_page_breaking_object(struct accesskit_node *node);
1163
1164
bool accesskit_node_is_spelling_error(const struct accesskit_node *node);
1165
1166
void accesskit_node_set_is_spelling_error(struct accesskit_node *node);
1167
1168
void accesskit_node_clear_is_spelling_error(struct accesskit_node *node);
1169
1170
bool accesskit_node_is_grammar_error(const struct accesskit_node *node);
1171
1172
void accesskit_node_set_is_grammar_error(struct accesskit_node *node);
1173
1174
void accesskit_node_clear_is_grammar_error(struct accesskit_node *node);
1175
1176
bool accesskit_node_is_search_match(const struct accesskit_node *node);
1177
1178
void accesskit_node_set_is_search_match(struct accesskit_node *node);
1179
1180
void accesskit_node_clear_is_search_match(struct accesskit_node *node);
1181
1182
bool accesskit_node_is_suggestion(const struct accesskit_node *node);
1183
1184
void accesskit_node_set_is_suggestion(struct accesskit_node *node);
1185
1186
void accesskit_node_clear_is_suggestion(struct accesskit_node *node);
1187
1188
struct accesskit_node_ids accesskit_node_children(
1189
const struct accesskit_node *node);
1190
1191
/**
1192
* Caller is responsible for freeing `values`.
1193
*/
1194
void accesskit_node_set_children(struct accesskit_node *node, size_t length,
1195
const accesskit_node_id *values);
1196
1197
void accesskit_node_push_child(struct accesskit_node *node,
1198
accesskit_node_id item);
1199
1200
void accesskit_node_clear_children(struct accesskit_node *node);
1201
1202
struct accesskit_node_ids accesskit_node_controls(
1203
const struct accesskit_node *node);
1204
1205
/**
1206
* Caller is responsible for freeing `values`.
1207
*/
1208
void accesskit_node_set_controls(struct accesskit_node *node, size_t length,
1209
const accesskit_node_id *values);
1210
1211
void accesskit_node_push_controlled(struct accesskit_node *node,
1212
accesskit_node_id item);
1213
1214
void accesskit_node_clear_controls(struct accesskit_node *node);
1215
1216
struct accesskit_node_ids accesskit_node_details(
1217
const struct accesskit_node *node);
1218
1219
/**
1220
* Caller is responsible for freeing `values`.
1221
*/
1222
void accesskit_node_set_details(struct accesskit_node *node, size_t length,
1223
const accesskit_node_id *values);
1224
1225
void accesskit_node_push_detail(struct accesskit_node *node,
1226
accesskit_node_id item);
1227
1228
void accesskit_node_clear_details(struct accesskit_node *node);
1229
1230
struct accesskit_node_ids accesskit_node_described_by(
1231
const struct accesskit_node *node);
1232
1233
/**
1234
* Caller is responsible for freeing `values`.
1235
*/
1236
void accesskit_node_set_described_by(struct accesskit_node *node, size_t length,
1237
const accesskit_node_id *values);
1238
1239
void accesskit_node_push_described_by(struct accesskit_node *node,
1240
accesskit_node_id item);
1241
1242
void accesskit_node_clear_described_by(struct accesskit_node *node);
1243
1244
struct accesskit_node_ids accesskit_node_flow_to(
1245
const struct accesskit_node *node);
1246
1247
/**
1248
* Caller is responsible for freeing `values`.
1249
*/
1250
void accesskit_node_set_flow_to(struct accesskit_node *node, size_t length,
1251
const accesskit_node_id *values);
1252
1253
void accesskit_node_push_flow_to(struct accesskit_node *node,
1254
accesskit_node_id item);
1255
1256
void accesskit_node_clear_flow_to(struct accesskit_node *node);
1257
1258
struct accesskit_node_ids accesskit_node_labelled_by(
1259
const struct accesskit_node *node);
1260
1261
/**
1262
* Caller is responsible for freeing `values`.
1263
*/
1264
void accesskit_node_set_labelled_by(struct accesskit_node *node, size_t length,
1265
const accesskit_node_id *values);
1266
1267
void accesskit_node_push_labelled_by(struct accesskit_node *node,
1268
accesskit_node_id item);
1269
1270
void accesskit_node_clear_labelled_by(struct accesskit_node *node);
1271
1272
struct accesskit_node_ids accesskit_node_owns(
1273
const struct accesskit_node *node);
1274
1275
/**
1276
* Caller is responsible for freeing `values`.
1277
*/
1278
void accesskit_node_set_owns(struct accesskit_node *node, size_t length,
1279
const accesskit_node_id *values);
1280
1281
void accesskit_node_push_owned(struct accesskit_node *node,
1282
accesskit_node_id item);
1283
1284
void accesskit_node_clear_owns(struct accesskit_node *node);
1285
1286
struct accesskit_node_ids accesskit_node_radio_group(
1287
const struct accesskit_node *node);
1288
1289
/**
1290
* Caller is responsible for freeing `values`.
1291
*/
1292
void accesskit_node_set_radio_group(struct accesskit_node *node, size_t length,
1293
const accesskit_node_id *values);
1294
1295
void accesskit_node_push_to_radio_group(struct accesskit_node *node,
1296
accesskit_node_id item);
1297
1298
void accesskit_node_clear_radio_group(struct accesskit_node *node);
1299
1300
struct accesskit_opt_node_id accesskit_node_active_descendant(
1301
const struct accesskit_node *node);
1302
1303
void accesskit_node_set_active_descendant(struct accesskit_node *node,
1304
accesskit_node_id value);
1305
1306
void accesskit_node_clear_active_descendant(struct accesskit_node *node);
1307
1308
struct accesskit_opt_node_id accesskit_node_error_message(
1309
const struct accesskit_node *node);
1310
1311
void accesskit_node_set_error_message(struct accesskit_node *node,
1312
accesskit_node_id value);
1313
1314
void accesskit_node_clear_error_message(struct accesskit_node *node);
1315
1316
struct accesskit_opt_node_id accesskit_node_in_page_link_target(
1317
const struct accesskit_node *node);
1318
1319
void accesskit_node_set_in_page_link_target(struct accesskit_node *node,
1320
accesskit_node_id value);
1321
1322
void accesskit_node_clear_in_page_link_target(struct accesskit_node *node);
1323
1324
struct accesskit_opt_node_id accesskit_node_member_of(
1325
const struct accesskit_node *node);
1326
1327
void accesskit_node_set_member_of(struct accesskit_node *node,
1328
accesskit_node_id value);
1329
1330
void accesskit_node_clear_member_of(struct accesskit_node *node);
1331
1332
struct accesskit_opt_node_id accesskit_node_next_on_line(
1333
const struct accesskit_node *node);
1334
1335
void accesskit_node_set_next_on_line(struct accesskit_node *node,
1336
accesskit_node_id value);
1337
1338
void accesskit_node_clear_next_on_line(struct accesskit_node *node);
1339
1340
struct accesskit_opt_node_id accesskit_node_previous_on_line(
1341
const struct accesskit_node *node);
1342
1343
void accesskit_node_set_previous_on_line(struct accesskit_node *node,
1344
accesskit_node_id value);
1345
1346
void accesskit_node_clear_previous_on_line(struct accesskit_node *node);
1347
1348
struct accesskit_opt_node_id accesskit_node_popup_for(
1349
const struct accesskit_node *node);
1350
1351
void accesskit_node_set_popup_for(struct accesskit_node *node,
1352
accesskit_node_id value);
1353
1354
void accesskit_node_clear_popup_for(struct accesskit_node *node);
1355
1356
/**
1357
* Only call this function with a string that originated from AccessKit.
1358
*/
1359
void accesskit_string_free(char *string);
1360
1361
/**
1362
* Caller must call `accesskit_string_free` with the return value.
1363
*/
1364
char *accesskit_node_label(const struct accesskit_node *node);
1365
1366
/**
1367
* Caller is responsible for freeing the memory pointed by `value`.
1368
*/
1369
void accesskit_node_set_label(struct accesskit_node *node, const char *value);
1370
1371
void accesskit_node_clear_label(struct accesskit_node *node);
1372
1373
/**
1374
* Caller must call `accesskit_string_free` with the return value.
1375
*/
1376
char *accesskit_node_description(const struct accesskit_node *node);
1377
1378
/**
1379
* Caller is responsible for freeing the memory pointed by `value`.
1380
*/
1381
void accesskit_node_set_description(struct accesskit_node *node,
1382
const char *value);
1383
1384
void accesskit_node_clear_description(struct accesskit_node *node);
1385
1386
/**
1387
* Caller must call `accesskit_string_free` with the return value.
1388
*/
1389
char *accesskit_node_value(const struct accesskit_node *node);
1390
1391
/**
1392
* Caller is responsible for freeing the memory pointed by `value`.
1393
*/
1394
void accesskit_node_set_value(struct accesskit_node *node, const char *value);
1395
1396
void accesskit_node_clear_value(struct accesskit_node *node);
1397
1398
/**
1399
* Caller must call `accesskit_string_free` with the return value.
1400
*/
1401
char *accesskit_node_access_key(const struct accesskit_node *node);
1402
1403
/**
1404
* Caller is responsible for freeing the memory pointed by `value`.
1405
*/
1406
void accesskit_node_set_access_key(struct accesskit_node *node,
1407
const char *value);
1408
1409
void accesskit_node_clear_access_key(struct accesskit_node *node);
1410
1411
/**
1412
* Caller must call `accesskit_string_free` with the return value.
1413
*/
1414
char *accesskit_node_author_id(const struct accesskit_node *node);
1415
1416
/**
1417
* Caller is responsible for freeing the memory pointed by `value`.
1418
*/
1419
void accesskit_node_set_author_id(struct accesskit_node *node,
1420
const char *value);
1421
1422
void accesskit_node_clear_author_id(struct accesskit_node *node);
1423
1424
/**
1425
* Caller must call `accesskit_string_free` with the return value.
1426
*/
1427
char *accesskit_node_class_name(const struct accesskit_node *node);
1428
1429
/**
1430
* Caller is responsible for freeing the memory pointed by `value`.
1431
*/
1432
void accesskit_node_set_class_name(struct accesskit_node *node,
1433
const char *value);
1434
1435
void accesskit_node_clear_class_name(struct accesskit_node *node);
1436
1437
/**
1438
* Caller must call `accesskit_string_free` with the return value.
1439
*/
1440
char *accesskit_node_font_family(const struct accesskit_node *node);
1441
1442
/**
1443
* Caller is responsible for freeing the memory pointed by `value`.
1444
*/
1445
void accesskit_node_set_font_family(struct accesskit_node *node,
1446
const char *value);
1447
1448
void accesskit_node_clear_font_family(struct accesskit_node *node);
1449
1450
/**
1451
* Caller must call `accesskit_string_free` with the return value.
1452
*/
1453
char *accesskit_node_html_tag(const struct accesskit_node *node);
1454
1455
/**
1456
* Caller is responsible for freeing the memory pointed by `value`.
1457
*/
1458
void accesskit_node_set_html_tag(struct accesskit_node *node,
1459
const char *value);
1460
1461
void accesskit_node_clear_html_tag(struct accesskit_node *node);
1462
1463
/**
1464
* Caller must call `accesskit_string_free` with the return value.
1465
*/
1466
char *accesskit_node_inner_html(const struct accesskit_node *node);
1467
1468
/**
1469
* Caller is responsible for freeing the memory pointed by `value`.
1470
*/
1471
void accesskit_node_set_inner_html(struct accesskit_node *node,
1472
const char *value);
1473
1474
void accesskit_node_clear_inner_html(struct accesskit_node *node);
1475
1476
/**
1477
* Caller must call `accesskit_string_free` with the return value.
1478
*/
1479
char *accesskit_node_keyboard_shortcut(const struct accesskit_node *node);
1480
1481
/**
1482
* Caller is responsible for freeing the memory pointed by `value`.
1483
*/
1484
void accesskit_node_set_keyboard_shortcut(struct accesskit_node *node,
1485
const char *value);
1486
1487
void accesskit_node_clear_keyboard_shortcut(struct accesskit_node *node);
1488
1489
/**
1490
* Caller must call `accesskit_string_free` with the return value.
1491
*/
1492
char *accesskit_node_language(const struct accesskit_node *node);
1493
1494
/**
1495
* Caller is responsible for freeing the memory pointed by `value`.
1496
*/
1497
void accesskit_node_set_language(struct accesskit_node *node,
1498
const char *value);
1499
1500
void accesskit_node_clear_language(struct accesskit_node *node);
1501
1502
/**
1503
* Caller must call `accesskit_string_free` with the return value.
1504
*/
1505
char *accesskit_node_placeholder(const struct accesskit_node *node);
1506
1507
/**
1508
* Caller is responsible for freeing the memory pointed by `value`.
1509
*/
1510
void accesskit_node_set_placeholder(struct accesskit_node *node,
1511
const char *value);
1512
1513
void accesskit_node_clear_placeholder(struct accesskit_node *node);
1514
1515
/**
1516
* Caller must call `accesskit_string_free` with the return value.
1517
*/
1518
char *accesskit_node_role_description(const struct accesskit_node *node);
1519
1520
/**
1521
* Caller is responsible for freeing the memory pointed by `value`.
1522
*/
1523
void accesskit_node_set_role_description(struct accesskit_node *node,
1524
const char *value);
1525
1526
void accesskit_node_clear_role_description(struct accesskit_node *node);
1527
1528
/**
1529
* Caller must call `accesskit_string_free` with the return value.
1530
*/
1531
char *accesskit_node_state_description(const struct accesskit_node *node);
1532
1533
/**
1534
* Caller is responsible for freeing the memory pointed by `value`.
1535
*/
1536
void accesskit_node_set_state_description(struct accesskit_node *node,
1537
const char *value);
1538
1539
void accesskit_node_clear_state_description(struct accesskit_node *node);
1540
1541
/**
1542
* Caller must call `accesskit_string_free` with the return value.
1543
*/
1544
char *accesskit_node_tooltip(const struct accesskit_node *node);
1545
1546
/**
1547
* Caller is responsible for freeing the memory pointed by `value`.
1548
*/
1549
void accesskit_node_set_tooltip(struct accesskit_node *node, const char *value);
1550
1551
void accesskit_node_clear_tooltip(struct accesskit_node *node);
1552
1553
/**
1554
* Caller must call `accesskit_string_free` with the return value.
1555
*/
1556
char *accesskit_node_url(const struct accesskit_node *node);
1557
1558
/**
1559
* Caller is responsible for freeing the memory pointed by `value`.
1560
*/
1561
void accesskit_node_set_url(struct accesskit_node *node, const char *value);
1562
1563
void accesskit_node_clear_url(struct accesskit_node *node);
1564
1565
/**
1566
* Caller must call `accesskit_string_free` with the return value.
1567
*/
1568
char *accesskit_node_row_index_text(const struct accesskit_node *node);
1569
1570
/**
1571
* Caller is responsible for freeing the memory pointed by `value`.
1572
*/
1573
void accesskit_node_set_row_index_text(struct accesskit_node *node,
1574
const char *value);
1575
1576
void accesskit_node_clear_row_index_text(struct accesskit_node *node);
1577
1578
/**
1579
* Caller must call `accesskit_string_free` with the return value.
1580
*/
1581
char *accesskit_node_column_index_text(const struct accesskit_node *node);
1582
1583
/**
1584
* Caller is responsible for freeing the memory pointed by `value`.
1585
*/
1586
void accesskit_node_set_column_index_text(struct accesskit_node *node,
1587
const char *value);
1588
1589
void accesskit_node_clear_column_index_text(struct accesskit_node *node);
1590
1591
struct accesskit_opt_double accesskit_node_scroll_x(
1592
const struct accesskit_node *node);
1593
1594
void accesskit_node_set_scroll_x(struct accesskit_node *node, double value);
1595
1596
void accesskit_node_clear_scroll_x(struct accesskit_node *node);
1597
1598
struct accesskit_opt_double accesskit_node_scroll_x_min(
1599
const struct accesskit_node *node);
1600
1601
void accesskit_node_set_scroll_x_min(struct accesskit_node *node, double value);
1602
1603
void accesskit_node_clear_scroll_x_min(struct accesskit_node *node);
1604
1605
struct accesskit_opt_double accesskit_node_scroll_x_max(
1606
const struct accesskit_node *node);
1607
1608
void accesskit_node_set_scroll_x_max(struct accesskit_node *node, double value);
1609
1610
void accesskit_node_clear_scroll_x_max(struct accesskit_node *node);
1611
1612
struct accesskit_opt_double accesskit_node_scroll_y(
1613
const struct accesskit_node *node);
1614
1615
void accesskit_node_set_scroll_y(struct accesskit_node *node, double value);
1616
1617
void accesskit_node_clear_scroll_y(struct accesskit_node *node);
1618
1619
struct accesskit_opt_double accesskit_node_scroll_y_min(
1620
const struct accesskit_node *node);
1621
1622
void accesskit_node_set_scroll_y_min(struct accesskit_node *node, double value);
1623
1624
void accesskit_node_clear_scroll_y_min(struct accesskit_node *node);
1625
1626
struct accesskit_opt_double accesskit_node_scroll_y_max(
1627
const struct accesskit_node *node);
1628
1629
void accesskit_node_set_scroll_y_max(struct accesskit_node *node, double value);
1630
1631
void accesskit_node_clear_scroll_y_max(struct accesskit_node *node);
1632
1633
struct accesskit_opt_double accesskit_node_numeric_value(
1634
const struct accesskit_node *node);
1635
1636
void accesskit_node_set_numeric_value(struct accesskit_node *node,
1637
double value);
1638
1639
void accesskit_node_clear_numeric_value(struct accesskit_node *node);
1640
1641
struct accesskit_opt_double accesskit_node_min_numeric_value(
1642
const struct accesskit_node *node);
1643
1644
void accesskit_node_set_min_numeric_value(struct accesskit_node *node,
1645
double value);
1646
1647
void accesskit_node_clear_min_numeric_value(struct accesskit_node *node);
1648
1649
struct accesskit_opt_double accesskit_node_max_numeric_value(
1650
const struct accesskit_node *node);
1651
1652
void accesskit_node_set_max_numeric_value(struct accesskit_node *node,
1653
double value);
1654
1655
void accesskit_node_clear_max_numeric_value(struct accesskit_node *node);
1656
1657
struct accesskit_opt_double accesskit_node_numeric_value_step(
1658
const struct accesskit_node *node);
1659
1660
void accesskit_node_set_numeric_value_step(struct accesskit_node *node,
1661
double value);
1662
1663
void accesskit_node_clear_numeric_value_step(struct accesskit_node *node);
1664
1665
struct accesskit_opt_double accesskit_node_numeric_value_jump(
1666
const struct accesskit_node *node);
1667
1668
void accesskit_node_set_numeric_value_jump(struct accesskit_node *node,
1669
double value);
1670
1671
void accesskit_node_clear_numeric_value_jump(struct accesskit_node *node);
1672
1673
struct accesskit_opt_double accesskit_node_font_size(
1674
const struct accesskit_node *node);
1675
1676
void accesskit_node_set_font_size(struct accesskit_node *node, double value);
1677
1678
void accesskit_node_clear_font_size(struct accesskit_node *node);
1679
1680
struct accesskit_opt_double accesskit_node_font_weight(
1681
const struct accesskit_node *node);
1682
1683
void accesskit_node_set_font_weight(struct accesskit_node *node, double value);
1684
1685
void accesskit_node_clear_font_weight(struct accesskit_node *node);
1686
1687
struct accesskit_opt_index accesskit_node_row_count(
1688
const struct accesskit_node *node);
1689
1690
void accesskit_node_set_row_count(struct accesskit_node *node, size_t value);
1691
1692
void accesskit_node_clear_row_count(struct accesskit_node *node);
1693
1694
struct accesskit_opt_index accesskit_node_column_count(
1695
const struct accesskit_node *node);
1696
1697
void accesskit_node_set_column_count(struct accesskit_node *node, size_t value);
1698
1699
void accesskit_node_clear_column_count(struct accesskit_node *node);
1700
1701
struct accesskit_opt_index accesskit_node_row_index(
1702
const struct accesskit_node *node);
1703
1704
void accesskit_node_set_row_index(struct accesskit_node *node, size_t value);
1705
1706
void accesskit_node_clear_row_index(struct accesskit_node *node);
1707
1708
struct accesskit_opt_index accesskit_node_column_index(
1709
const struct accesskit_node *node);
1710
1711
void accesskit_node_set_column_index(struct accesskit_node *node, size_t value);
1712
1713
void accesskit_node_clear_column_index(struct accesskit_node *node);
1714
1715
struct accesskit_opt_index accesskit_node_row_span(
1716
const struct accesskit_node *node);
1717
1718
void accesskit_node_set_row_span(struct accesskit_node *node, size_t value);
1719
1720
void accesskit_node_clear_row_span(struct accesskit_node *node);
1721
1722
struct accesskit_opt_index accesskit_node_column_span(
1723
const struct accesskit_node *node);
1724
1725
void accesskit_node_set_column_span(struct accesskit_node *node, size_t value);
1726
1727
void accesskit_node_clear_column_span(struct accesskit_node *node);
1728
1729
struct accesskit_opt_index accesskit_node_level(
1730
const struct accesskit_node *node);
1731
1732
void accesskit_node_set_level(struct accesskit_node *node, size_t value);
1733
1734
void accesskit_node_clear_level(struct accesskit_node *node);
1735
1736
struct accesskit_opt_index accesskit_node_size_of_set(
1737
const struct accesskit_node *node);
1738
1739
void accesskit_node_set_size_of_set(struct accesskit_node *node, size_t value);
1740
1741
void accesskit_node_clear_size_of_set(struct accesskit_node *node);
1742
1743
struct accesskit_opt_index accesskit_node_position_in_set(
1744
const struct accesskit_node *node);
1745
1746
void accesskit_node_set_position_in_set(struct accesskit_node *node,
1747
size_t value);
1748
1749
void accesskit_node_clear_position_in_set(struct accesskit_node *node);
1750
1751
struct accesskit_opt_color accesskit_node_color_value(
1752
const struct accesskit_node *node);
1753
1754
void accesskit_node_set_color_value(struct accesskit_node *node,
1755
uint32_t value);
1756
1757
void accesskit_node_clear_color_value(struct accesskit_node *node);
1758
1759
struct accesskit_opt_color accesskit_node_background_color(
1760
const struct accesskit_node *node);
1761
1762
void accesskit_node_set_background_color(struct accesskit_node *node,
1763
uint32_t value);
1764
1765
void accesskit_node_clear_background_color(struct accesskit_node *node);
1766
1767
struct accesskit_opt_color accesskit_node_foreground_color(
1768
const struct accesskit_node *node);
1769
1770
void accesskit_node_set_foreground_color(struct accesskit_node *node,
1771
uint32_t value);
1772
1773
void accesskit_node_clear_foreground_color(struct accesskit_node *node);
1774
1775
struct accesskit_opt_text_decoration accesskit_node_overline(
1776
const struct accesskit_node *node);
1777
1778
void accesskit_node_set_overline(struct accesskit_node *node,
1779
accesskit_text_decoration value);
1780
1781
void accesskit_node_clear_overline(struct accesskit_node *node);
1782
1783
struct accesskit_opt_text_decoration accesskit_node_strikethrough(
1784
const struct accesskit_node *node);
1785
1786
void accesskit_node_set_strikethrough(struct accesskit_node *node,
1787
accesskit_text_decoration value);
1788
1789
void accesskit_node_clear_strikethrough(struct accesskit_node *node);
1790
1791
struct accesskit_opt_text_decoration accesskit_node_underline(
1792
const struct accesskit_node *node);
1793
1794
void accesskit_node_set_underline(struct accesskit_node *node,
1795
accesskit_text_decoration value);
1796
1797
void accesskit_node_clear_underline(struct accesskit_node *node);
1798
1799
struct accesskit_lengths accesskit_node_character_lengths(
1800
const struct accesskit_node *node);
1801
1802
/**
1803
* Caller is responsible for freeing `values`.
1804
*/
1805
void accesskit_node_set_character_lengths(struct accesskit_node *node,
1806
size_t length, const uint8_t *values);
1807
1808
void accesskit_node_clear_character_lengths(struct accesskit_node *node);
1809
1810
struct accesskit_lengths accesskit_node_word_lengths(
1811
const struct accesskit_node *node);
1812
1813
/**
1814
* Caller is responsible for freeing `values`.
1815
*/
1816
void accesskit_node_set_word_lengths(struct accesskit_node *node, size_t length,
1817
const uint8_t *values);
1818
1819
void accesskit_node_clear_word_lengths(struct accesskit_node *node);
1820
1821
struct accesskit_opt_coords accesskit_node_character_positions(
1822
const struct accesskit_node *node);
1823
1824
/**
1825
* Caller is responsible for freeing `values`.
1826
*/
1827
void accesskit_node_set_character_positions(struct accesskit_node *node,
1828
size_t length, const float *values);
1829
1830
void accesskit_node_clear_character_positions(struct accesskit_node *node);
1831
1832
struct accesskit_opt_coords accesskit_node_character_widths(
1833
const struct accesskit_node *node);
1834
1835
/**
1836
* Caller is responsible for freeing `values`.
1837
*/
1838
void accesskit_node_set_character_widths(struct accesskit_node *node,
1839
size_t length, const float *values);
1840
1841
void accesskit_node_clear_character_widths(struct accesskit_node *node);
1842
1843
struct accesskit_opt_bool accesskit_node_is_expanded(
1844
const struct accesskit_node *node);
1845
1846
void accesskit_node_set_expanded(struct accesskit_node *node, bool value);
1847
1848
void accesskit_node_clear_expanded(struct accesskit_node *node);
1849
1850
struct accesskit_opt_bool accesskit_node_is_selected(
1851
const struct accesskit_node *node);
1852
1853
void accesskit_node_set_selected(struct accesskit_node *node, bool value);
1854
1855
void accesskit_node_clear_selected(struct accesskit_node *node);
1856
1857
struct accesskit_opt_invalid accesskit_node_invalid(
1858
const struct accesskit_node *node);
1859
1860
void accesskit_node_set_invalid(struct accesskit_node *node,
1861
accesskit_invalid value);
1862
1863
void accesskit_node_clear_invalid(struct accesskit_node *node);
1864
1865
struct accesskit_opt_toggled accesskit_node_toggled(
1866
const struct accesskit_node *node);
1867
1868
void accesskit_node_set_toggled(struct accesskit_node *node,
1869
accesskit_toggled value);
1870
1871
void accesskit_node_clear_toggled(struct accesskit_node *node);
1872
1873
struct accesskit_opt_live accesskit_node_live(
1874
const struct accesskit_node *node);
1875
1876
void accesskit_node_set_live(struct accesskit_node *node, accesskit_live value);
1877
1878
void accesskit_node_clear_live(struct accesskit_node *node);
1879
1880
struct accesskit_opt_text_direction accesskit_node_text_direction(
1881
const struct accesskit_node *node);
1882
1883
void accesskit_node_set_text_direction(struct accesskit_node *node,
1884
accesskit_text_direction value);
1885
1886
void accesskit_node_clear_text_direction(struct accesskit_node *node);
1887
1888
struct accesskit_opt_orientation accesskit_node_orientation(
1889
const struct accesskit_node *node);
1890
1891
void accesskit_node_set_orientation(struct accesskit_node *node,
1892
accesskit_orientation value);
1893
1894
void accesskit_node_clear_orientation(struct accesskit_node *node);
1895
1896
struct accesskit_opt_sort_direction accesskit_node_sort_direction(
1897
const struct accesskit_node *node);
1898
1899
void accesskit_node_set_sort_direction(struct accesskit_node *node,
1900
accesskit_sort_direction value);
1901
1902
void accesskit_node_clear_sort_direction(struct accesskit_node *node);
1903
1904
struct accesskit_opt_aria_current accesskit_node_aria_current(
1905
const struct accesskit_node *node);
1906
1907
void accesskit_node_set_aria_current(struct accesskit_node *node,
1908
accesskit_aria_current value);
1909
1910
void accesskit_node_clear_aria_current(struct accesskit_node *node);
1911
1912
struct accesskit_opt_auto_complete accesskit_node_auto_complete(
1913
const struct accesskit_node *node);
1914
1915
void accesskit_node_set_auto_complete(struct accesskit_node *node,
1916
accesskit_auto_complete value);
1917
1918
void accesskit_node_clear_auto_complete(struct accesskit_node *node);
1919
1920
struct accesskit_opt_has_popup accesskit_node_has_popup(
1921
const struct accesskit_node *node);
1922
1923
void accesskit_node_set_has_popup(struct accesskit_node *node,
1924
accesskit_has_popup value);
1925
1926
void accesskit_node_clear_has_popup(struct accesskit_node *node);
1927
1928
struct accesskit_opt_list_style accesskit_node_list_style(
1929
const struct accesskit_node *node);
1930
1931
void accesskit_node_set_list_style(struct accesskit_node *node,
1932
accesskit_list_style value);
1933
1934
void accesskit_node_clear_list_style(struct accesskit_node *node);
1935
1936
struct accesskit_opt_text_align accesskit_node_text_align(
1937
const struct accesskit_node *node);
1938
1939
void accesskit_node_set_text_align(struct accesskit_node *node,
1940
accesskit_text_align value);
1941
1942
void accesskit_node_clear_text_align(struct accesskit_node *node);
1943
1944
struct accesskit_opt_vertical_offset accesskit_node_vertical_offset(
1945
const struct accesskit_node *node);
1946
1947
void accesskit_node_set_vertical_offset(struct accesskit_node *node,
1948
accesskit_vertical_offset value);
1949
1950
void accesskit_node_clear_vertical_offset(struct accesskit_node *node);
1951
1952
const struct accesskit_affine *accesskit_node_transform(
1953
const struct accesskit_node *node);
1954
1955
void accesskit_node_set_transform(struct accesskit_node *node,
1956
struct accesskit_affine value);
1957
1958
void accesskit_node_clear_transform(struct accesskit_node *node);
1959
1960
struct accesskit_opt_rect accesskit_node_bounds(
1961
const struct accesskit_node *node);
1962
1963
void accesskit_node_set_bounds(struct accesskit_node *node,
1964
struct accesskit_rect value);
1965
1966
void accesskit_node_clear_bounds(struct accesskit_node *node);
1967
1968
struct accesskit_opt_text_selection accesskit_node_text_selection(
1969
const struct accesskit_node *node);
1970
1971
void accesskit_node_set_text_selection(struct accesskit_node *node,
1972
struct accesskit_text_selection value);
1973
1974
void accesskit_node_clear_text_selection(struct accesskit_node *node);
1975
1976
struct accesskit_custom_action accesskit_custom_action_new(
1977
int32_t id, const char *description);
1978
1979
void accesskit_custom_actions_free(struct accesskit_custom_actions *value);
1980
1981
/**
1982
* Caller is responsible for freeing the returned value.
1983
*/
1984
const struct accesskit_custom_actions *accesskit_node_custom_actions(
1985
const struct accesskit_node *node);
1986
1987
/**
1988
* Caller is responsible for freeing `values`.
1989
*/
1990
void accesskit_node_set_custom_actions(
1991
struct accesskit_node *node, size_t length,
1992
const struct accesskit_custom_action *values);
1993
1994
void accesskit_node_push_custom_action(struct accesskit_node *node,
1995
struct accesskit_custom_action item);
1996
1997
void accesskit_node_clear_custom_actions(struct accesskit_node *node);
1998
1999
struct accesskit_node *accesskit_node_new(accesskit_role role);
2000
2001
void accesskit_node_free(struct accesskit_node *node);
2002
2003
struct accesskit_tree *accesskit_tree_new(accesskit_node_id root);
2004
2005
void accesskit_tree_free(struct accesskit_tree *tree);
2006
2007
/**
2008
* Caller must call `accesskit_string_free` with the return value.
2009
*/
2010
char *accesskit_tree_get_toolkit_name(const struct accesskit_tree *tree);
2011
2012
void accesskit_tree_set_toolkit_name(struct accesskit_tree *tree,
2013
const char *toolkit_name);
2014
2015
void accesskit_tree_clear_toolkit_name(struct accesskit_tree *tree);
2016
2017
/**
2018
* Caller must call `accesskit_string_free` with the return value.
2019
*/
2020
char *accesskit_tree_get_toolkit_version(const struct accesskit_tree *tree);
2021
2022
void accesskit_tree_set_toolkit_version(struct accesskit_tree *tree,
2023
const char *toolkit_version);
2024
2025
void accesskit_tree_clear_toolkit_version(struct accesskit_tree *tree);
2026
2027
struct accesskit_tree_update *accesskit_tree_update_with_focus(
2028
accesskit_node_id focus);
2029
2030
struct accesskit_tree_update *accesskit_tree_update_with_capacity_and_focus(
2031
size_t capacity, accesskit_node_id focus);
2032
2033
void accesskit_tree_update_free(struct accesskit_tree_update *update);
2034
2035
/**
2036
* Appends the provided node to the tree update's list of nodes.
2037
* Takes ownership of `node`.
2038
*/
2039
void accesskit_tree_update_push_node(struct accesskit_tree_update *update,
2040
accesskit_node_id id,
2041
struct accesskit_node *node);
2042
2043
void accesskit_tree_update_set_tree(struct accesskit_tree_update *update,
2044
struct accesskit_tree *tree);
2045
2046
void accesskit_tree_update_clear_tree(struct accesskit_tree_update *update);
2047
2048
void accesskit_tree_update_set_focus(struct accesskit_tree_update *update,
2049
accesskit_node_id focus);
2050
2051
void accesskit_action_request_free(struct accesskit_action_request *request);
2052
2053
struct accesskit_affine accesskit_affine_identity(void);
2054
2055
struct accesskit_affine accesskit_affine_flip_y(void);
2056
2057
struct accesskit_affine accesskit_affine_flip_x(void);
2058
2059
struct accesskit_affine accesskit_affine_scale(double s);
2060
2061
struct accesskit_affine accesskit_affine_scale_non_uniform(double s_x,
2062
double s_y);
2063
2064
struct accesskit_affine accesskit_affine_translate(struct accesskit_vec2 p);
2065
2066
struct accesskit_affine accesskit_affine_map_unit_square(
2067
struct accesskit_rect rect);
2068
2069
double accesskit_affine_determinant(struct accesskit_affine affine);
2070
2071
struct accesskit_affine accesskit_affine_inverse(
2072
struct accesskit_affine affine);
2073
2074
struct accesskit_rect accesskit_affine_transform_rect_bbox(
2075
struct accesskit_affine affine, struct accesskit_rect rect);
2076
2077
bool accesskit_affine_is_finite(const struct accesskit_affine *affine);
2078
2079
bool accesskit_affine_is_nan(const struct accesskit_affine *affine);
2080
2081
struct accesskit_vec2 accesskit_point_to_vec2(struct accesskit_point point);
2082
2083
struct accesskit_rect accesskit_rect_from_points(struct accesskit_point p0,
2084
struct accesskit_point p1);
2085
2086
struct accesskit_rect accesskit_rect_from_origin_size(
2087
struct accesskit_point origin, struct accesskit_size size);
2088
2089
struct accesskit_rect accesskit_rect_with_origin(struct accesskit_rect rect,
2090
struct accesskit_point origin);
2091
2092
struct accesskit_rect accesskit_rect_with_size(struct accesskit_rect rect,
2093
struct accesskit_size size);
2094
2095
double accesskit_rect_width(const struct accesskit_rect *rect);
2096
2097
double accesskit_rect_height(const struct accesskit_rect *rect);
2098
2099
double accesskit_rect_min_x(const struct accesskit_rect *rect);
2100
2101
double accesskit_rect_max_x(const struct accesskit_rect *rect);
2102
2103
double accesskit_rect_min_y(const struct accesskit_rect *rect);
2104
2105
double accesskit_rect_max_y(const struct accesskit_rect *rect);
2106
2107
struct accesskit_point accesskit_rect_origin(const struct accesskit_rect *rect);
2108
2109
struct accesskit_size accesskit_rect_size(const struct accesskit_rect *rect);
2110
2111
struct accesskit_rect accesskit_rect_abs(const struct accesskit_rect *rect);
2112
2113
double accesskit_rect_area(const struct accesskit_rect *rect);
2114
2115
bool accesskit_rect_is_empty(const struct accesskit_rect *rect);
2116
2117
bool accesskit_rect_contains(const struct accesskit_rect *rect,
2118
struct accesskit_point point);
2119
2120
struct accesskit_rect accesskit_rect_union(const struct accesskit_rect *rect,
2121
struct accesskit_rect other);
2122
2123
struct accesskit_rect accesskit_rect_union_pt(const struct accesskit_rect *rect,
2124
struct accesskit_point pt);
2125
2126
struct accesskit_rect accesskit_rect_intersect(
2127
const struct accesskit_rect *rect, struct accesskit_rect other);
2128
2129
struct accesskit_vec2 accesskit_size_to_vec2(struct accesskit_size size);
2130
2131
struct accesskit_point accesskit_vec2_to_point(struct accesskit_vec2 vec2);
2132
2133
struct accesskit_size accesskit_vec2_to_size(struct accesskit_vec2 vec2);
2134
2135
#if defined(__APPLE__)
2136
/**
2137
* Memory is also freed when calling this function.
2138
*/
2139
void accesskit_macos_queued_events_raise(
2140
struct accesskit_macos_queued_events *events);
2141
#endif
2142
2143
#if defined(__APPLE__)
2144
/**
2145
* # Safety
2146
*
2147
* `view` must be a valid, unreleased pointer to an `NSView`.
2148
*/
2149
struct accesskit_macos_adapter *accesskit_macos_adapter_new(
2150
void *view, bool is_view_focused,
2151
accesskit_action_handler_callback action_handler,
2152
void *action_handler_userdata);
2153
#endif
2154
2155
#if defined(__APPLE__)
2156
void accesskit_macos_adapter_free(struct accesskit_macos_adapter *adapter);
2157
#endif
2158
2159
#if defined(__APPLE__)
2160
/**
2161
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2162
* It can be null if the adapter is not active.
2163
*/
2164
struct accesskit_macos_queued_events *accesskit_macos_adapter_update_if_active(
2165
struct accesskit_macos_adapter *adapter,
2166
accesskit_tree_update_factory update_factory,
2167
void *update_factory_userdata);
2168
#endif
2169
2170
#if defined(__APPLE__)
2171
/**
2172
* Update the tree state based on whether the window is focused.
2173
*
2174
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2175
* It can be null if the adapter is not active.
2176
*/
2177
struct accesskit_macos_queued_events *
2178
accesskit_macos_adapter_update_view_focus_state(
2179
struct accesskit_macos_adapter *adapter, bool is_focused);
2180
#endif
2181
2182
#if defined(__APPLE__)
2183
/**
2184
* Returns a pointer to an `NSArray`. Ownership of the pointer is not
2185
* transferred.
2186
*/
2187
void *accesskit_macos_adapter_view_children(
2188
struct accesskit_macos_adapter *adapter,
2189
accesskit_activation_handler_callback activation_handler,
2190
void *activation_handler_userdata);
2191
#endif
2192
2193
#if defined(__APPLE__)
2194
/**
2195
* Returns a pointer to an `NSObject`. Ownership of the pointer is not
2196
* transferred.
2197
*/
2198
void *accesskit_macos_adapter_focus(
2199
struct accesskit_macos_adapter *adapter,
2200
accesskit_activation_handler_callback activation_handler,
2201
void *activation_handler_userdata);
2202
#endif
2203
2204
#if defined(__APPLE__)
2205
/**
2206
* Returns a pointer to an `NSObject`. Ownership of the pointer is not
2207
* transferred.
2208
*/
2209
void *accesskit_macos_adapter_hit_test(
2210
struct accesskit_macos_adapter *adapter, double x, double y,
2211
accesskit_activation_handler_callback activation_handler,
2212
void *activation_handler_userdata);
2213
#endif
2214
2215
#if defined(__APPLE__)
2216
/**
2217
* # Safety
2218
*
2219
* `view` must be a valid, unreleased pointer to an `NSView`.
2220
*/
2221
struct accesskit_macos_subclassing_adapter *
2222
accesskit_macos_subclassing_adapter_new(
2223
void *view, accesskit_activation_handler_callback activation_handler,
2224
void *activation_handler_userdata,
2225
accesskit_action_handler_callback action_handler,
2226
void *action_handler_userdata);
2227
#endif
2228
2229
#if defined(__APPLE__)
2230
/**
2231
* # Safety
2232
*
2233
* `window` must be a valid, unreleased pointer to an `NSWindow`.
2234
*
2235
* # Panics
2236
*
2237
* This function panics if the specified window doesn't currently have
2238
* a content view.
2239
*/
2240
struct accesskit_macos_subclassing_adapter *
2241
accesskit_macos_subclassing_adapter_for_window(
2242
void *window, accesskit_activation_handler_callback activation_handler,
2243
void *activation_handler_userdata,
2244
accesskit_action_handler_callback action_handler,
2245
void *action_handler_userdata);
2246
#endif
2247
2248
#if defined(__APPLE__)
2249
void accesskit_macos_subclassing_adapter_free(
2250
struct accesskit_macos_subclassing_adapter *adapter);
2251
#endif
2252
2253
#if defined(__APPLE__)
2254
/**
2255
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2256
* It can be null if the adapter is not active.
2257
*/
2258
struct accesskit_macos_queued_events *
2259
accesskit_macos_subclassing_adapter_update_if_active(
2260
struct accesskit_macos_subclassing_adapter *adapter,
2261
accesskit_tree_update_factory update_factory,
2262
void *update_factory_userdata);
2263
#endif
2264
2265
#if defined(__APPLE__)
2266
/**
2267
* Update the tree state based on whether the window is focused.
2268
*
2269
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2270
* It can be null if the adapter is not active.
2271
*/
2272
struct accesskit_macos_queued_events *
2273
accesskit_macos_subclassing_adapter_update_view_focus_state(
2274
struct accesskit_macos_subclassing_adapter *adapter, bool is_focused);
2275
#endif
2276
2277
#if defined(__APPLE__)
2278
/**
2279
* Modifies the specified class, which must be a subclass of `NSWindow`,
2280
* to include an `accessibilityFocusedUIElement` method that calls
2281
* the corresponding method on the window's content view. This is needed
2282
* for windowing libraries such as SDL that place the keyboard focus
2283
* directly on the window rather than the content view.
2284
*
2285
* # Safety
2286
*
2287
* This function is declared unsafe because the caller must ensure that the
2288
* code for this library is never unloaded from the application process,
2289
* since it's not possible to reverse this operation. It's safest
2290
* if this library is statically linked into the application's main executable.
2291
* Also, this function assumes that the specified class is a subclass
2292
* of `NSWindow`.
2293
*/
2294
void accesskit_macos_add_focus_forwarder_to_window_class(
2295
const char *class_name);
2296
#endif
2297
2298
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2299
defined(__NetBSD__) || defined(__OpenBSD__))
2300
/**
2301
* All of the handlers will always be called from another thread.
2302
*/
2303
struct accesskit_unix_adapter *accesskit_unix_adapter_new(
2304
accesskit_activation_handler_callback activation_handler,
2305
void *activation_handler_userdata,
2306
accesskit_action_handler_callback action_handler,
2307
void *action_handler_userdata,
2308
accesskit_deactivation_handler_callback deactivation_handler,
2309
void *deactivation_handler_userdata);
2310
#endif
2311
2312
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2313
defined(__NetBSD__) || defined(__OpenBSD__))
2314
void accesskit_unix_adapter_free(struct accesskit_unix_adapter *adapter);
2315
#endif
2316
2317
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2318
defined(__NetBSD__) || defined(__OpenBSD__))
2319
/**
2320
* Set the bounds of the top-level window. The outer bounds contain any
2321
* window decoration and borders.
2322
*
2323
* # Caveats
2324
*
2325
* Since an application can not get the position of its window under
2326
* Wayland, calling this method only makes sense under X11.
2327
*/
2328
void accesskit_unix_adapter_set_root_window_bounds(
2329
struct accesskit_unix_adapter *adapter, struct accesskit_rect outer,
2330
struct accesskit_rect inner);
2331
#endif
2332
2333
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2334
defined(__NetBSD__) || defined(__OpenBSD__))
2335
void accesskit_unix_adapter_update_if_active(
2336
struct accesskit_unix_adapter *adapter,
2337
accesskit_tree_update_factory update_factory,
2338
void *update_factory_userdata);
2339
#endif
2340
2341
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2342
defined(__NetBSD__) || defined(__OpenBSD__))
2343
/**
2344
* Update the tree state based on whether the window is focused.
2345
*/
2346
void accesskit_unix_adapter_update_window_focus_state(
2347
struct accesskit_unix_adapter *adapter, bool is_focused);
2348
#endif
2349
2350
#if defined(_WIN32)
2351
/**
2352
* Memory is also freed when calling this function.
2353
*/
2354
void accesskit_windows_queued_events_raise(
2355
struct accesskit_windows_queued_events *events);
2356
#endif
2357
2358
#if defined(_WIN32)
2359
struct accesskit_windows_adapter *accesskit_windows_adapter_new(
2360
HWND hwnd, bool is_window_focused,
2361
accesskit_action_handler_callback action_handler,
2362
void *action_handler_userdata);
2363
#endif
2364
2365
#if defined(_WIN32)
2366
void accesskit_windows_adapter_free(struct accesskit_windows_adapter *adapter);
2367
#endif
2368
2369
#if defined(_WIN32)
2370
/**
2371
* You must call `accesskit_windows_queued_events_raise` on the returned
2372
* pointer. It can be null if the adapter is not active.
2373
*/
2374
struct accesskit_windows_queued_events *
2375
accesskit_windows_adapter_update_if_active(
2376
struct accesskit_windows_adapter *adapter,
2377
accesskit_tree_update_factory update_factory,
2378
void *update_factory_userdata);
2379
#endif
2380
2381
#if defined(_WIN32)
2382
/**
2383
* Update the tree state based on whether the window is focused.
2384
*
2385
* You must call `accesskit_windows_queued_events_raise` on the returned
2386
* pointer.
2387
*/
2388
struct accesskit_windows_queued_events *
2389
accesskit_windows_adapter_update_window_focus_state(
2390
struct accesskit_windows_adapter *adapter, bool is_focused);
2391
#endif
2392
2393
#if defined(_WIN32)
2394
struct accesskit_opt_lresult accesskit_windows_adapter_handle_wm_getobject(
2395
struct accesskit_windows_adapter *adapter, WPARAM wparam, LPARAM lparam,
2396
accesskit_activation_handler_callback activation_handler,
2397
void *activation_handler_userdata);
2398
#endif
2399
2400
#if defined(_WIN32)
2401
/**
2402
* Creates a new Windows platform adapter using window subclassing.
2403
* This must be done before the window is shown or focused
2404
* for the first time.
2405
*
2406
* This must be called on the thread that owns the window. The activation
2407
* handler will always be called on that thread. The action handler
2408
* may or may not be called on that thread.
2409
*
2410
* # Panics
2411
*
2412
* Panics if the window is already visible.
2413
*/
2414
struct accesskit_windows_subclassing_adapter *
2415
accesskit_windows_subclassing_adapter_new(
2416
HWND hwnd, accesskit_activation_handler_callback activation_handler,
2417
void *activation_handler_userdata,
2418
accesskit_action_handler_callback action_handler,
2419
void *action_handler_userdata);
2420
#endif
2421
2422
#if defined(_WIN32)
2423
void accesskit_windows_subclassing_adapter_free(
2424
struct accesskit_windows_subclassing_adapter *adapter);
2425
#endif
2426
2427
#if defined(_WIN32)
2428
/**
2429
* You must call `accesskit_windows_queued_events_raise` on the returned
2430
* pointer. It can be null if the adapter is not active.
2431
*/
2432
struct accesskit_windows_queued_events *
2433
accesskit_windows_subclassing_adapter_update_if_active(
2434
struct accesskit_windows_subclassing_adapter *adapter,
2435
accesskit_tree_update_factory update_factory,
2436
void *update_factory_userdata);
2437
#endif
2438
2439
#ifdef __cplusplus
2440
} // extern "C"
2441
#endif // __cplusplus
2442
2443
#endif /* ACCESSKIT_H */
2444
2445