Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/accesskit/include/accesskit.h
20852 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
typedef struct accesskit_custom_action accesskit_custom_action;
577
578
#if defined(__APPLE__)
579
typedef struct accesskit_macos_adapter accesskit_macos_adapter;
580
#endif
581
582
#if defined(__APPLE__)
583
typedef struct accesskit_macos_queued_events accesskit_macos_queued_events;
584
#endif
585
586
#if defined(__APPLE__)
587
typedef struct accesskit_macos_subclassing_adapter
588
accesskit_macos_subclassing_adapter;
589
#endif
590
591
typedef struct accesskit_node accesskit_node;
592
593
typedef struct accesskit_tree accesskit_tree;
594
595
typedef struct accesskit_tree_update accesskit_tree_update;
596
597
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
598
defined(__NetBSD__) || defined(__OpenBSD__))
599
typedef struct accesskit_unix_adapter accesskit_unix_adapter;
600
#endif
601
602
#if defined(_WIN32)
603
typedef struct accesskit_windows_adapter accesskit_windows_adapter;
604
#endif
605
606
#if defined(_WIN32)
607
typedef struct accesskit_windows_queued_events accesskit_windows_queued_events;
608
#endif
609
610
#if defined(_WIN32)
611
typedef struct accesskit_windows_subclassing_adapter
612
accesskit_windows_subclassing_adapter;
613
#endif
614
615
typedef uint64_t accesskit_node_id;
616
617
typedef struct accesskit_node_ids {
618
size_t length;
619
const accesskit_node_id *values;
620
} accesskit_node_ids;
621
622
/**
623
* Represents an optional value.
624
*
625
* If `has_value` is false, do not read the `value` field.
626
*/
627
typedef struct accesskit_opt_node_id {
628
bool has_value;
629
accesskit_node_id value;
630
} accesskit_opt_node_id;
631
632
/**
633
* Represents an optional value.
634
*
635
* If `has_value` is false, do not read the `value` field.
636
*/
637
typedef struct accesskit_opt_double {
638
bool has_value;
639
double value;
640
} accesskit_opt_double;
641
642
/**
643
* Represents an optional value.
644
*
645
* If `has_value` is false, do not read the `value` field.
646
*/
647
typedef struct accesskit_opt_index {
648
bool has_value;
649
size_t value;
650
} accesskit_opt_index;
651
652
/**
653
* Represents an optional value.
654
*
655
* If `has_value` is false, do not read the `value` field.
656
*/
657
typedef struct accesskit_opt_color {
658
bool has_value;
659
uint32_t value;
660
} accesskit_opt_color;
661
662
/**
663
* Represents an optional value.
664
*
665
* If `has_value` is false, do not read the `value` field.
666
*/
667
typedef struct accesskit_opt_text_decoration {
668
bool has_value;
669
accesskit_text_decoration value;
670
} accesskit_opt_text_decoration;
671
672
typedef struct accesskit_lengths {
673
size_t length;
674
const uint8_t *values;
675
} accesskit_lengths;
676
677
typedef struct accesskit_opt_coords {
678
bool has_value;
679
size_t length;
680
const float *values;
681
} accesskit_opt_coords;
682
683
/**
684
* Represents an optional value.
685
*
686
* If `has_value` is false, do not read the `value` field.
687
*/
688
typedef struct accesskit_opt_bool {
689
bool has_value;
690
bool value;
691
} accesskit_opt_bool;
692
693
/**
694
* Represents an optional value.
695
*
696
* If `has_value` is false, do not read the `value` field.
697
*/
698
typedef struct accesskit_opt_invalid {
699
bool has_value;
700
accesskit_invalid value;
701
} accesskit_opt_invalid;
702
703
/**
704
* Represents an optional value.
705
*
706
* If `has_value` is false, do not read the `value` field.
707
*/
708
typedef struct accesskit_opt_toggled {
709
bool has_value;
710
accesskit_toggled value;
711
} accesskit_opt_toggled;
712
713
/**
714
* Represents an optional value.
715
*
716
* If `has_value` is false, do not read the `value` field.
717
*/
718
typedef struct accesskit_opt_live {
719
bool has_value;
720
accesskit_live value;
721
} accesskit_opt_live;
722
723
/**
724
* Represents an optional value.
725
*
726
* If `has_value` is false, do not read the `value` field.
727
*/
728
typedef struct accesskit_opt_text_direction {
729
bool has_value;
730
accesskit_text_direction value;
731
} accesskit_opt_text_direction;
732
733
/**
734
* Represents an optional value.
735
*
736
* If `has_value` is false, do not read the `value` field.
737
*/
738
typedef struct accesskit_opt_orientation {
739
bool has_value;
740
accesskit_orientation value;
741
} accesskit_opt_orientation;
742
743
/**
744
* Represents an optional value.
745
*
746
* If `has_value` is false, do not read the `value` field.
747
*/
748
typedef struct accesskit_opt_sort_direction {
749
bool has_value;
750
accesskit_sort_direction value;
751
} accesskit_opt_sort_direction;
752
753
/**
754
* Represents an optional value.
755
*
756
* If `has_value` is false, do not read the `value` field.
757
*/
758
typedef struct accesskit_opt_aria_current {
759
bool has_value;
760
accesskit_aria_current value;
761
} accesskit_opt_aria_current;
762
763
/**
764
* Represents an optional value.
765
*
766
* If `has_value` is false, do not read the `value` field.
767
*/
768
typedef struct accesskit_opt_auto_complete {
769
bool has_value;
770
accesskit_auto_complete value;
771
} accesskit_opt_auto_complete;
772
773
/**
774
* Represents an optional value.
775
*
776
* If `has_value` is false, do not read the `value` field.
777
*/
778
typedef struct accesskit_opt_has_popup {
779
bool has_value;
780
accesskit_has_popup value;
781
} accesskit_opt_has_popup;
782
783
/**
784
* Represents an optional value.
785
*
786
* If `has_value` is false, do not read the `value` field.
787
*/
788
typedef struct accesskit_opt_list_style {
789
bool has_value;
790
accesskit_list_style value;
791
} accesskit_opt_list_style;
792
793
/**
794
* Represents an optional value.
795
*
796
* If `has_value` is false, do not read the `value` field.
797
*/
798
typedef struct accesskit_opt_text_align {
799
bool has_value;
800
accesskit_text_align value;
801
} accesskit_opt_text_align;
802
803
/**
804
* Represents an optional value.
805
*
806
* If `has_value` is false, do not read the `value` field.
807
*/
808
typedef struct accesskit_opt_vertical_offset {
809
bool has_value;
810
accesskit_vertical_offset value;
811
} accesskit_opt_vertical_offset;
812
813
/**
814
* A 2D affine transform. Derived from
815
* [kurbo](https://github.com/linebender/kurbo).
816
*/
817
typedef struct accesskit_affine {
818
double _0[6];
819
} accesskit_affine;
820
821
/**
822
* A rectangle. Derived from [kurbo](https://github.com/linebender/kurbo).
823
*/
824
typedef struct accesskit_rect {
825
/**
826
* The minimum x coordinate (left edge).
827
*/
828
double x0;
829
/**
830
* The minimum y coordinate (top edge in y-down spaces).
831
*/
832
double y0;
833
/**
834
* The maximum x coordinate (right edge).
835
*/
836
double x1;
837
/**
838
* The maximum y coordinate (bottom edge in y-down spaces).
839
*/
840
double y1;
841
} accesskit_rect;
842
843
/**
844
* Represents an optional value.
845
*
846
* If `has_value` is false, do not read the `value` field.
847
*/
848
typedef struct accesskit_opt_rect {
849
bool has_value;
850
struct accesskit_rect value;
851
} accesskit_opt_rect;
852
853
typedef struct accesskit_text_position {
854
accesskit_node_id node;
855
size_t character_index;
856
} accesskit_text_position;
857
858
typedef struct accesskit_text_selection {
859
struct accesskit_text_position anchor;
860
struct accesskit_text_position focus;
861
} accesskit_text_selection;
862
863
/**
864
* Represents an optional value.
865
*
866
* If `has_value` is false, do not read the `value` field.
867
*/
868
typedef struct accesskit_opt_text_selection {
869
bool has_value;
870
struct accesskit_text_selection value;
871
} accesskit_opt_text_selection;
872
873
typedef struct accesskit_custom_actions {
874
size_t length;
875
struct accesskit_custom_action **values;
876
} accesskit_custom_actions;
877
878
/**
879
* A 2D point. Derived from [kurbo](https://github.com/linebender/kurbo).
880
*/
881
typedef struct accesskit_point {
882
/**
883
* The x coordinate.
884
*/
885
double x;
886
/**
887
* The y coordinate.
888
*/
889
double y;
890
} accesskit_point;
891
892
typedef enum accesskit_action_data_Tag {
893
ACCESSKIT_ACTION_DATA_CUSTOM_ACTION,
894
ACCESSKIT_ACTION_DATA_VALUE,
895
ACCESSKIT_ACTION_DATA_NUMERIC_VALUE,
896
ACCESSKIT_ACTION_DATA_SCROLL_UNIT,
897
/**
898
* Optional suggestion for `ACCESSKIT_ACTION_SCROLL_INTO_VIEW`, specifying
899
* the preferred position of the target node relative to the scrollable
900
* container's viewport.
901
*/
902
ACCESSKIT_ACTION_DATA_SCROLL_HINT,
903
ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT,
904
ACCESSKIT_ACTION_DATA_SET_SCROLL_OFFSET,
905
ACCESSKIT_ACTION_DATA_SET_TEXT_SELECTION,
906
} accesskit_action_data_Tag;
907
908
typedef struct accesskit_action_data {
909
accesskit_action_data_Tag tag;
910
union {
911
struct {
912
int32_t custom_action;
913
};
914
struct {
915
char *value;
916
};
917
struct {
918
double numeric_value;
919
};
920
struct {
921
accesskit_scroll_unit scroll_unit;
922
};
923
struct {
924
accesskit_scroll_hint scroll_hint;
925
};
926
struct {
927
struct accesskit_point scroll_to_point;
928
};
929
struct {
930
struct accesskit_point set_scroll_offset;
931
};
932
struct {
933
struct accesskit_text_selection set_text_selection;
934
};
935
};
936
} accesskit_action_data;
937
938
/**
939
* Represents an optional value.
940
*
941
* If `has_value` is false, do not read the `value` field.
942
*/
943
typedef struct accesskit_opt_action_data {
944
bool has_value;
945
struct accesskit_action_data value;
946
} accesskit_opt_action_data;
947
948
typedef struct accesskit_action_request {
949
accesskit_action action;
950
accesskit_node_id target;
951
struct accesskit_opt_action_data data;
952
} accesskit_action_request;
953
954
/**
955
* A 2D vector. Derived from [kurbo](https://github.com/linebender/kurbo).
956
*
957
* This is intended primarily for a vector in the mathematical sense,
958
* but it can be interpreted as a translation, and converted to and
959
* from a point (vector relative to the origin) and size.
960
*/
961
typedef struct accesskit_vec2 {
962
/**
963
* The x-coordinate.
964
*/
965
double x;
966
/**
967
* The y-coordinate.
968
*/
969
double y;
970
} accesskit_vec2;
971
972
/**
973
* A 2D size. Derived from [kurbo](https://github.com/linebender/kurbo).
974
*/
975
typedef struct accesskit_size {
976
/**
977
* The width.
978
*/
979
double width;
980
/**
981
* The height.
982
*/
983
double height;
984
} accesskit_size;
985
986
/**
987
* Ownership of `request` is transferred to the callback. `request` must
988
* be freed using `accesskit_action_request_free`.
989
*/
990
typedef void (*accesskit_action_handler_callback)(
991
struct accesskit_action_request *request, void *userdata);
992
993
typedef void *accesskit_tree_update_factory_userdata;
994
995
/**
996
* This function can't return a null pointer. Ownership of the returned value
997
* will be transferred to the caller.
998
*/
999
typedef struct accesskit_tree_update *(*accesskit_tree_update_factory)(
1000
accesskit_tree_update_factory_userdata);
1001
1002
typedef struct accesskit_tree_update *(*accesskit_activation_handler_callback)(
1003
void *userdata);
1004
1005
typedef void (*accesskit_deactivation_handler_callback)(void *userdata);
1006
1007
#if defined(_WIN32)
1008
/**
1009
* Represents an optional value.
1010
*
1011
* If `has_value` is false, do not read the `value` field.
1012
*/
1013
typedef struct accesskit_opt_lresult {
1014
bool has_value;
1015
LRESULT value;
1016
} accesskit_opt_lresult;
1017
#endif
1018
1019
#ifdef __cplusplus
1020
extern "C" {
1021
#endif // __cplusplus
1022
1023
accesskit_role accesskit_node_role(const struct accesskit_node *node);
1024
1025
void accesskit_node_set_role(struct accesskit_node *node, accesskit_role value);
1026
1027
bool accesskit_node_supports_action(const struct accesskit_node *node,
1028
accesskit_action action);
1029
1030
void accesskit_node_add_action(struct accesskit_node *node,
1031
accesskit_action action);
1032
1033
void accesskit_node_remove_action(struct accesskit_node *node,
1034
accesskit_action action);
1035
1036
void accesskit_node_clear_actions(struct accesskit_node *node);
1037
1038
/**
1039
* Return whether the specified action is in the set supported on this node's
1040
* direct children in the filtered tree.
1041
*/
1042
bool accesskit_node_child_supports_action(const struct accesskit_node *node,
1043
accesskit_action action);
1044
1045
/**
1046
* Add the specified action to the set supported on this node's direct
1047
* children in the filtered tree.
1048
*/
1049
void accesskit_node_add_child_action(struct accesskit_node *node,
1050
accesskit_action action);
1051
1052
/**
1053
* Remove the specified action from the set supported on this node's direct
1054
* children in the filtered tree.
1055
*/
1056
void accesskit_node_remove_child_action(struct accesskit_node *node,
1057
accesskit_action action);
1058
1059
/**
1060
* Clear the set of actions supported on this node's direct children in the
1061
* filtered tree.
1062
*/
1063
void accesskit_node_clear_child_actions(struct accesskit_node *node);
1064
1065
bool accesskit_node_is_hidden(const struct accesskit_node *node);
1066
1067
void accesskit_node_set_hidden(struct accesskit_node *node);
1068
1069
void accesskit_node_clear_hidden(struct accesskit_node *node);
1070
1071
bool accesskit_node_is_multiselectable(const struct accesskit_node *node);
1072
1073
void accesskit_node_set_multiselectable(struct accesskit_node *node);
1074
1075
void accesskit_node_clear_multiselectable(struct accesskit_node *node);
1076
1077
bool accesskit_node_is_required(const struct accesskit_node *node);
1078
1079
void accesskit_node_set_required(struct accesskit_node *node);
1080
1081
void accesskit_node_clear_required(struct accesskit_node *node);
1082
1083
bool accesskit_node_is_visited(const struct accesskit_node *node);
1084
1085
void accesskit_node_set_visited(struct accesskit_node *node);
1086
1087
void accesskit_node_clear_visited(struct accesskit_node *node);
1088
1089
bool accesskit_node_is_busy(const struct accesskit_node *node);
1090
1091
void accesskit_node_set_busy(struct accesskit_node *node);
1092
1093
void accesskit_node_clear_busy(struct accesskit_node *node);
1094
1095
bool accesskit_node_is_live_atomic(const struct accesskit_node *node);
1096
1097
void accesskit_node_set_live_atomic(struct accesskit_node *node);
1098
1099
void accesskit_node_clear_live_atomic(struct accesskit_node *node);
1100
1101
bool accesskit_node_is_modal(const struct accesskit_node *node);
1102
1103
void accesskit_node_set_modal(struct accesskit_node *node);
1104
1105
void accesskit_node_clear_modal(struct accesskit_node *node);
1106
1107
bool accesskit_node_is_touch_transparent(const struct accesskit_node *node);
1108
1109
void accesskit_node_set_touch_transparent(struct accesskit_node *node);
1110
1111
void accesskit_node_clear_touch_transparent(struct accesskit_node *node);
1112
1113
bool accesskit_node_is_read_only(const struct accesskit_node *node);
1114
1115
void accesskit_node_set_read_only(struct accesskit_node *node);
1116
1117
void accesskit_node_clear_read_only(struct accesskit_node *node);
1118
1119
bool accesskit_node_is_disabled(const struct accesskit_node *node);
1120
1121
void accesskit_node_set_disabled(struct accesskit_node *node);
1122
1123
void accesskit_node_clear_disabled(struct accesskit_node *node);
1124
1125
bool accesskit_node_is_bold(const struct accesskit_node *node);
1126
1127
void accesskit_node_set_bold(struct accesskit_node *node);
1128
1129
void accesskit_node_clear_bold(struct accesskit_node *node);
1130
1131
bool accesskit_node_is_italic(const struct accesskit_node *node);
1132
1133
void accesskit_node_set_italic(struct accesskit_node *node);
1134
1135
void accesskit_node_clear_italic(struct accesskit_node *node);
1136
1137
bool accesskit_node_clips_children(const struct accesskit_node *node);
1138
1139
void accesskit_node_set_clips_children(struct accesskit_node *node);
1140
1141
void accesskit_node_clear_clips_children(struct accesskit_node *node);
1142
1143
bool accesskit_node_is_line_breaking_object(const struct accesskit_node *node);
1144
1145
void accesskit_node_set_is_line_breaking_object(struct accesskit_node *node);
1146
1147
void accesskit_node_clear_is_line_breaking_object(struct accesskit_node *node);
1148
1149
bool accesskit_node_is_page_breaking_object(const struct accesskit_node *node);
1150
1151
void accesskit_node_set_is_page_breaking_object(struct accesskit_node *node);
1152
1153
void accesskit_node_clear_is_page_breaking_object(struct accesskit_node *node);
1154
1155
bool accesskit_node_is_spelling_error(const struct accesskit_node *node);
1156
1157
void accesskit_node_set_is_spelling_error(struct accesskit_node *node);
1158
1159
void accesskit_node_clear_is_spelling_error(struct accesskit_node *node);
1160
1161
bool accesskit_node_is_grammar_error(const struct accesskit_node *node);
1162
1163
void accesskit_node_set_is_grammar_error(struct accesskit_node *node);
1164
1165
void accesskit_node_clear_is_grammar_error(struct accesskit_node *node);
1166
1167
bool accesskit_node_is_search_match(const struct accesskit_node *node);
1168
1169
void accesskit_node_set_is_search_match(struct accesskit_node *node);
1170
1171
void accesskit_node_clear_is_search_match(struct accesskit_node *node);
1172
1173
bool accesskit_node_is_suggestion(const struct accesskit_node *node);
1174
1175
void accesskit_node_set_is_suggestion(struct accesskit_node *node);
1176
1177
void accesskit_node_clear_is_suggestion(struct accesskit_node *node);
1178
1179
struct accesskit_node_ids accesskit_node_children(
1180
const struct accesskit_node *node);
1181
1182
/**
1183
* Caller is responsible for freeing `values`.
1184
*/
1185
void accesskit_node_set_children(struct accesskit_node *node, size_t length,
1186
const accesskit_node_id *values);
1187
1188
void accesskit_node_push_child(struct accesskit_node *node,
1189
accesskit_node_id item);
1190
1191
void accesskit_node_clear_children(struct accesskit_node *node);
1192
1193
struct accesskit_node_ids accesskit_node_controls(
1194
const struct accesskit_node *node);
1195
1196
/**
1197
* Caller is responsible for freeing `values`.
1198
*/
1199
void accesskit_node_set_controls(struct accesskit_node *node, size_t length,
1200
const accesskit_node_id *values);
1201
1202
void accesskit_node_push_controlled(struct accesskit_node *node,
1203
accesskit_node_id item);
1204
1205
void accesskit_node_clear_controls(struct accesskit_node *node);
1206
1207
struct accesskit_node_ids accesskit_node_details(
1208
const struct accesskit_node *node);
1209
1210
/**
1211
* Caller is responsible for freeing `values`.
1212
*/
1213
void accesskit_node_set_details(struct accesskit_node *node, size_t length,
1214
const accesskit_node_id *values);
1215
1216
void accesskit_node_push_detail(struct accesskit_node *node,
1217
accesskit_node_id item);
1218
1219
void accesskit_node_clear_details(struct accesskit_node *node);
1220
1221
struct accesskit_node_ids accesskit_node_described_by(
1222
const struct accesskit_node *node);
1223
1224
/**
1225
* Caller is responsible for freeing `values`.
1226
*/
1227
void accesskit_node_set_described_by(struct accesskit_node *node, size_t length,
1228
const accesskit_node_id *values);
1229
1230
void accesskit_node_push_described_by(struct accesskit_node *node,
1231
accesskit_node_id item);
1232
1233
void accesskit_node_clear_described_by(struct accesskit_node *node);
1234
1235
struct accesskit_node_ids accesskit_node_flow_to(
1236
const struct accesskit_node *node);
1237
1238
/**
1239
* Caller is responsible for freeing `values`.
1240
*/
1241
void accesskit_node_set_flow_to(struct accesskit_node *node, size_t length,
1242
const accesskit_node_id *values);
1243
1244
void accesskit_node_push_flow_to(struct accesskit_node *node,
1245
accesskit_node_id item);
1246
1247
void accesskit_node_clear_flow_to(struct accesskit_node *node);
1248
1249
struct accesskit_node_ids accesskit_node_labelled_by(
1250
const struct accesskit_node *node);
1251
1252
/**
1253
* Caller is responsible for freeing `values`.
1254
*/
1255
void accesskit_node_set_labelled_by(struct accesskit_node *node, size_t length,
1256
const accesskit_node_id *values);
1257
1258
void accesskit_node_push_labelled_by(struct accesskit_node *node,
1259
accesskit_node_id item);
1260
1261
void accesskit_node_clear_labelled_by(struct accesskit_node *node);
1262
1263
struct accesskit_node_ids accesskit_node_owns(
1264
const struct accesskit_node *node);
1265
1266
/**
1267
* Caller is responsible for freeing `values`.
1268
*/
1269
void accesskit_node_set_owns(struct accesskit_node *node, size_t length,
1270
const accesskit_node_id *values);
1271
1272
void accesskit_node_push_owned(struct accesskit_node *node,
1273
accesskit_node_id item);
1274
1275
void accesskit_node_clear_owns(struct accesskit_node *node);
1276
1277
struct accesskit_node_ids accesskit_node_radio_group(
1278
const struct accesskit_node *node);
1279
1280
/**
1281
* Caller is responsible for freeing `values`.
1282
*/
1283
void accesskit_node_set_radio_group(struct accesskit_node *node, size_t length,
1284
const accesskit_node_id *values);
1285
1286
void accesskit_node_push_to_radio_group(struct accesskit_node *node,
1287
accesskit_node_id item);
1288
1289
void accesskit_node_clear_radio_group(struct accesskit_node *node);
1290
1291
struct accesskit_opt_node_id accesskit_node_active_descendant(
1292
const struct accesskit_node *node);
1293
1294
void accesskit_node_set_active_descendant(struct accesskit_node *node,
1295
accesskit_node_id value);
1296
1297
void accesskit_node_clear_active_descendant(struct accesskit_node *node);
1298
1299
struct accesskit_opt_node_id accesskit_node_error_message(
1300
const struct accesskit_node *node);
1301
1302
void accesskit_node_set_error_message(struct accesskit_node *node,
1303
accesskit_node_id value);
1304
1305
void accesskit_node_clear_error_message(struct accesskit_node *node);
1306
1307
struct accesskit_opt_node_id accesskit_node_in_page_link_target(
1308
const struct accesskit_node *node);
1309
1310
void accesskit_node_set_in_page_link_target(struct accesskit_node *node,
1311
accesskit_node_id value);
1312
1313
void accesskit_node_clear_in_page_link_target(struct accesskit_node *node);
1314
1315
struct accesskit_opt_node_id accesskit_node_member_of(
1316
const struct accesskit_node *node);
1317
1318
void accesskit_node_set_member_of(struct accesskit_node *node,
1319
accesskit_node_id value);
1320
1321
void accesskit_node_clear_member_of(struct accesskit_node *node);
1322
1323
struct accesskit_opt_node_id accesskit_node_next_on_line(
1324
const struct accesskit_node *node);
1325
1326
void accesskit_node_set_next_on_line(struct accesskit_node *node,
1327
accesskit_node_id value);
1328
1329
void accesskit_node_clear_next_on_line(struct accesskit_node *node);
1330
1331
struct accesskit_opt_node_id accesskit_node_previous_on_line(
1332
const struct accesskit_node *node);
1333
1334
void accesskit_node_set_previous_on_line(struct accesskit_node *node,
1335
accesskit_node_id value);
1336
1337
void accesskit_node_clear_previous_on_line(struct accesskit_node *node);
1338
1339
struct accesskit_opt_node_id accesskit_node_popup_for(
1340
const struct accesskit_node *node);
1341
1342
void accesskit_node_set_popup_for(struct accesskit_node *node,
1343
accesskit_node_id value);
1344
1345
void accesskit_node_clear_popup_for(struct accesskit_node *node);
1346
1347
/**
1348
* Only call this function with a string that originated from AccessKit.
1349
*/
1350
void accesskit_string_free(char *string);
1351
1352
/**
1353
* Caller must call `accesskit_string_free` with the return value.
1354
*/
1355
char *accesskit_node_label(const struct accesskit_node *node);
1356
1357
/**
1358
* Caller is responsible for freeing the memory pointed by `value`.
1359
*/
1360
void accesskit_node_set_label(struct accesskit_node *node, const char *value);
1361
1362
/**
1363
* Caller is responsible for freeing the memory pointed by `value`.
1364
*/
1365
void accesskit_node_set_label_with_length(struct accesskit_node *node,
1366
const char *value, size_t length);
1367
1368
void accesskit_node_clear_label(struct accesskit_node *node);
1369
1370
/**
1371
* Caller must call `accesskit_string_free` with the return value.
1372
*/
1373
char *accesskit_node_description(const struct accesskit_node *node);
1374
1375
/**
1376
* Caller is responsible for freeing the memory pointed by `value`.
1377
*/
1378
void accesskit_node_set_description(struct accesskit_node *node,
1379
const char *value);
1380
1381
/**
1382
* Caller is responsible for freeing the memory pointed by `value`.
1383
*/
1384
void accesskit_node_set_description_with_length(struct accesskit_node *node,
1385
const char *value,
1386
size_t length);
1387
1388
void accesskit_node_clear_description(struct accesskit_node *node);
1389
1390
/**
1391
* Caller must call `accesskit_string_free` with the return value.
1392
*/
1393
char *accesskit_node_value(const struct accesskit_node *node);
1394
1395
/**
1396
* Caller is responsible for freeing the memory pointed by `value`.
1397
*/
1398
void accesskit_node_set_value(struct accesskit_node *node, const char *value);
1399
1400
/**
1401
* Caller is responsible for freeing the memory pointed by `value`.
1402
*/
1403
void accesskit_node_set_value_with_length(struct accesskit_node *node,
1404
const char *value, size_t length);
1405
1406
void accesskit_node_clear_value(struct accesskit_node *node);
1407
1408
/**
1409
* Caller must call `accesskit_string_free` with the return value.
1410
*/
1411
char *accesskit_node_access_key(const struct accesskit_node *node);
1412
1413
/**
1414
* Caller is responsible for freeing the memory pointed by `value`.
1415
*/
1416
void accesskit_node_set_access_key(struct accesskit_node *node,
1417
const char *value);
1418
1419
/**
1420
* Caller is responsible for freeing the memory pointed by `value`.
1421
*/
1422
void accesskit_node_set_access_key_with_length(struct accesskit_node *node,
1423
const char *value,
1424
size_t length);
1425
1426
void accesskit_node_clear_access_key(struct accesskit_node *node);
1427
1428
/**
1429
* Caller must call `accesskit_string_free` with the return value.
1430
*/
1431
char *accesskit_node_author_id(const struct accesskit_node *node);
1432
1433
/**
1434
* Caller is responsible for freeing the memory pointed by `value`.
1435
*/
1436
void accesskit_node_set_author_id(struct accesskit_node *node,
1437
const char *value);
1438
1439
/**
1440
* Caller is responsible for freeing the memory pointed by `value`.
1441
*/
1442
void accesskit_node_set_author_id_with_length(struct accesskit_node *node,
1443
const char *value, size_t length);
1444
1445
void accesskit_node_clear_author_id(struct accesskit_node *node);
1446
1447
/**
1448
* Caller must call `accesskit_string_free` with the return value.
1449
*/
1450
char *accesskit_node_class_name(const struct accesskit_node *node);
1451
1452
/**
1453
* Caller is responsible for freeing the memory pointed by `value`.
1454
*/
1455
void accesskit_node_set_class_name(struct accesskit_node *node,
1456
const char *value);
1457
1458
/**
1459
* Caller is responsible for freeing the memory pointed by `value`.
1460
*/
1461
void accesskit_node_set_class_name_with_length(struct accesskit_node *node,
1462
const char *value,
1463
size_t length);
1464
1465
void accesskit_node_clear_class_name(struct accesskit_node *node);
1466
1467
/**
1468
* Caller must call `accesskit_string_free` with the return value.
1469
*/
1470
char *accesskit_node_font_family(const struct accesskit_node *node);
1471
1472
/**
1473
* Caller is responsible for freeing the memory pointed by `value`.
1474
*/
1475
void accesskit_node_set_font_family(struct accesskit_node *node,
1476
const char *value);
1477
1478
/**
1479
* Caller is responsible for freeing the memory pointed by `value`.
1480
*/
1481
void accesskit_node_set_font_family_with_length(struct accesskit_node *node,
1482
const char *value,
1483
size_t length);
1484
1485
void accesskit_node_clear_font_family(struct accesskit_node *node);
1486
1487
/**
1488
* Caller must call `accesskit_string_free` with the return value.
1489
*/
1490
char *accesskit_node_html_tag(const struct accesskit_node *node);
1491
1492
/**
1493
* Caller is responsible for freeing the memory pointed by `value`.
1494
*/
1495
void accesskit_node_set_html_tag(struct accesskit_node *node,
1496
const char *value);
1497
1498
/**
1499
* Caller is responsible for freeing the memory pointed by `value`.
1500
*/
1501
void accesskit_node_set_html_tag_with_length(struct accesskit_node *node,
1502
const char *value, size_t length);
1503
1504
void accesskit_node_clear_html_tag(struct accesskit_node *node);
1505
1506
/**
1507
* Caller must call `accesskit_string_free` with the return value.
1508
*/
1509
char *accesskit_node_inner_html(const struct accesskit_node *node);
1510
1511
/**
1512
* Caller is responsible for freeing the memory pointed by `value`.
1513
*/
1514
void accesskit_node_set_inner_html(struct accesskit_node *node,
1515
const char *value);
1516
1517
/**
1518
* Caller is responsible for freeing the memory pointed by `value`.
1519
*/
1520
void accesskit_node_set_inner_html_with_length(struct accesskit_node *node,
1521
const char *value,
1522
size_t length);
1523
1524
void accesskit_node_clear_inner_html(struct accesskit_node *node);
1525
1526
/**
1527
* Caller must call `accesskit_string_free` with the return value.
1528
*/
1529
char *accesskit_node_keyboard_shortcut(const struct accesskit_node *node);
1530
1531
/**
1532
* Caller is responsible for freeing the memory pointed by `value`.
1533
*/
1534
void accesskit_node_set_keyboard_shortcut(struct accesskit_node *node,
1535
const char *value);
1536
1537
/**
1538
* Caller is responsible for freeing the memory pointed by `value`.
1539
*/
1540
void accesskit_node_set_keyboard_shortcut_with_length(
1541
struct accesskit_node *node, const char *value, size_t length);
1542
1543
void accesskit_node_clear_keyboard_shortcut(struct accesskit_node *node);
1544
1545
/**
1546
* Caller must call `accesskit_string_free` with the return value.
1547
*/
1548
char *accesskit_node_language(const struct accesskit_node *node);
1549
1550
/**
1551
* Caller is responsible for freeing the memory pointed by `value`.
1552
*/
1553
void accesskit_node_set_language(struct accesskit_node *node,
1554
const char *value);
1555
1556
/**
1557
* Caller is responsible for freeing the memory pointed by `value`.
1558
*/
1559
void accesskit_node_set_language_with_length(struct accesskit_node *node,
1560
const char *value, size_t length);
1561
1562
void accesskit_node_clear_language(struct accesskit_node *node);
1563
1564
/**
1565
* Caller must call `accesskit_string_free` with the return value.
1566
*/
1567
char *accesskit_node_placeholder(const struct accesskit_node *node);
1568
1569
/**
1570
* Caller is responsible for freeing the memory pointed by `value`.
1571
*/
1572
void accesskit_node_set_placeholder(struct accesskit_node *node,
1573
const char *value);
1574
1575
/**
1576
* Caller is responsible for freeing the memory pointed by `value`.
1577
*/
1578
void accesskit_node_set_placeholder_with_length(struct accesskit_node *node,
1579
const char *value,
1580
size_t length);
1581
1582
void accesskit_node_clear_placeholder(struct accesskit_node *node);
1583
1584
/**
1585
* Caller must call `accesskit_string_free` with the return value.
1586
*/
1587
char *accesskit_node_role_description(const struct accesskit_node *node);
1588
1589
/**
1590
* Caller is responsible for freeing the memory pointed by `value`.
1591
*/
1592
void accesskit_node_set_role_description(struct accesskit_node *node,
1593
const char *value);
1594
1595
/**
1596
* Caller is responsible for freeing the memory pointed by `value`.
1597
*/
1598
void accesskit_node_set_role_description_with_length(
1599
struct accesskit_node *node, const char *value, size_t length);
1600
1601
void accesskit_node_clear_role_description(struct accesskit_node *node);
1602
1603
/**
1604
* Caller must call `accesskit_string_free` with the return value.
1605
*/
1606
char *accesskit_node_state_description(const struct accesskit_node *node);
1607
1608
/**
1609
* Caller is responsible for freeing the memory pointed by `value`.
1610
*/
1611
void accesskit_node_set_state_description(struct accesskit_node *node,
1612
const char *value);
1613
1614
/**
1615
* Caller is responsible for freeing the memory pointed by `value`.
1616
*/
1617
void accesskit_node_set_state_description_with_length(
1618
struct accesskit_node *node, const char *value, size_t length);
1619
1620
void accesskit_node_clear_state_description(struct accesskit_node *node);
1621
1622
/**
1623
* Caller must call `accesskit_string_free` with the return value.
1624
*/
1625
char *accesskit_node_tooltip(const struct accesskit_node *node);
1626
1627
/**
1628
* Caller is responsible for freeing the memory pointed by `value`.
1629
*/
1630
void accesskit_node_set_tooltip(struct accesskit_node *node, const char *value);
1631
1632
/**
1633
* Caller is responsible for freeing the memory pointed by `value`.
1634
*/
1635
void accesskit_node_set_tooltip_with_length(struct accesskit_node *node,
1636
const char *value, size_t length);
1637
1638
void accesskit_node_clear_tooltip(struct accesskit_node *node);
1639
1640
/**
1641
* Caller must call `accesskit_string_free` with the return value.
1642
*/
1643
char *accesskit_node_url(const struct accesskit_node *node);
1644
1645
/**
1646
* Caller is responsible for freeing the memory pointed by `value`.
1647
*/
1648
void accesskit_node_set_url(struct accesskit_node *node, const char *value);
1649
1650
/**
1651
* Caller is responsible for freeing the memory pointed by `value`.
1652
*/
1653
void accesskit_node_set_url_with_length(struct accesskit_node *node,
1654
const char *value, size_t length);
1655
1656
void accesskit_node_clear_url(struct accesskit_node *node);
1657
1658
/**
1659
* Caller must call `accesskit_string_free` with the return value.
1660
*/
1661
char *accesskit_node_row_index_text(const struct accesskit_node *node);
1662
1663
/**
1664
* Caller is responsible for freeing the memory pointed by `value`.
1665
*/
1666
void accesskit_node_set_row_index_text(struct accesskit_node *node,
1667
const char *value);
1668
1669
/**
1670
* Caller is responsible for freeing the memory pointed by `value`.
1671
*/
1672
void accesskit_node_set_row_index_text_with_length(struct accesskit_node *node,
1673
const char *value,
1674
size_t length);
1675
1676
void accesskit_node_clear_row_index_text(struct accesskit_node *node);
1677
1678
/**
1679
* Caller must call `accesskit_string_free` with the return value.
1680
*/
1681
char *accesskit_node_column_index_text(const struct accesskit_node *node);
1682
1683
/**
1684
* Caller is responsible for freeing the memory pointed by `value`.
1685
*/
1686
void accesskit_node_set_column_index_text(struct accesskit_node *node,
1687
const char *value);
1688
1689
/**
1690
* Caller is responsible for freeing the memory pointed by `value`.
1691
*/
1692
void accesskit_node_set_column_index_text_with_length(
1693
struct accesskit_node *node, const char *value, size_t length);
1694
1695
void accesskit_node_clear_column_index_text(struct accesskit_node *node);
1696
1697
struct accesskit_opt_double accesskit_node_scroll_x(
1698
const struct accesskit_node *node);
1699
1700
void accesskit_node_set_scroll_x(struct accesskit_node *node, double value);
1701
1702
void accesskit_node_clear_scroll_x(struct accesskit_node *node);
1703
1704
struct accesskit_opt_double accesskit_node_scroll_x_min(
1705
const struct accesskit_node *node);
1706
1707
void accesskit_node_set_scroll_x_min(struct accesskit_node *node, double value);
1708
1709
void accesskit_node_clear_scroll_x_min(struct accesskit_node *node);
1710
1711
struct accesskit_opt_double accesskit_node_scroll_x_max(
1712
const struct accesskit_node *node);
1713
1714
void accesskit_node_set_scroll_x_max(struct accesskit_node *node, double value);
1715
1716
void accesskit_node_clear_scroll_x_max(struct accesskit_node *node);
1717
1718
struct accesskit_opt_double accesskit_node_scroll_y(
1719
const struct accesskit_node *node);
1720
1721
void accesskit_node_set_scroll_y(struct accesskit_node *node, double value);
1722
1723
void accesskit_node_clear_scroll_y(struct accesskit_node *node);
1724
1725
struct accesskit_opt_double accesskit_node_scroll_y_min(
1726
const struct accesskit_node *node);
1727
1728
void accesskit_node_set_scroll_y_min(struct accesskit_node *node, double value);
1729
1730
void accesskit_node_clear_scroll_y_min(struct accesskit_node *node);
1731
1732
struct accesskit_opt_double accesskit_node_scroll_y_max(
1733
const struct accesskit_node *node);
1734
1735
void accesskit_node_set_scroll_y_max(struct accesskit_node *node, double value);
1736
1737
void accesskit_node_clear_scroll_y_max(struct accesskit_node *node);
1738
1739
struct accesskit_opt_double accesskit_node_numeric_value(
1740
const struct accesskit_node *node);
1741
1742
void accesskit_node_set_numeric_value(struct accesskit_node *node,
1743
double value);
1744
1745
void accesskit_node_clear_numeric_value(struct accesskit_node *node);
1746
1747
struct accesskit_opt_double accesskit_node_min_numeric_value(
1748
const struct accesskit_node *node);
1749
1750
void accesskit_node_set_min_numeric_value(struct accesskit_node *node,
1751
double value);
1752
1753
void accesskit_node_clear_min_numeric_value(struct accesskit_node *node);
1754
1755
struct accesskit_opt_double accesskit_node_max_numeric_value(
1756
const struct accesskit_node *node);
1757
1758
void accesskit_node_set_max_numeric_value(struct accesskit_node *node,
1759
double value);
1760
1761
void accesskit_node_clear_max_numeric_value(struct accesskit_node *node);
1762
1763
struct accesskit_opt_double accesskit_node_numeric_value_step(
1764
const struct accesskit_node *node);
1765
1766
void accesskit_node_set_numeric_value_step(struct accesskit_node *node,
1767
double value);
1768
1769
void accesskit_node_clear_numeric_value_step(struct accesskit_node *node);
1770
1771
struct accesskit_opt_double accesskit_node_numeric_value_jump(
1772
const struct accesskit_node *node);
1773
1774
void accesskit_node_set_numeric_value_jump(struct accesskit_node *node,
1775
double value);
1776
1777
void accesskit_node_clear_numeric_value_jump(struct accesskit_node *node);
1778
1779
struct accesskit_opt_double accesskit_node_font_size(
1780
const struct accesskit_node *node);
1781
1782
void accesskit_node_set_font_size(struct accesskit_node *node, double value);
1783
1784
void accesskit_node_clear_font_size(struct accesskit_node *node);
1785
1786
struct accesskit_opt_double accesskit_node_font_weight(
1787
const struct accesskit_node *node);
1788
1789
void accesskit_node_set_font_weight(struct accesskit_node *node, double value);
1790
1791
void accesskit_node_clear_font_weight(struct accesskit_node *node);
1792
1793
struct accesskit_opt_index accesskit_node_row_count(
1794
const struct accesskit_node *node);
1795
1796
void accesskit_node_set_row_count(struct accesskit_node *node, size_t value);
1797
1798
void accesskit_node_clear_row_count(struct accesskit_node *node);
1799
1800
struct accesskit_opt_index accesskit_node_column_count(
1801
const struct accesskit_node *node);
1802
1803
void accesskit_node_set_column_count(struct accesskit_node *node, size_t value);
1804
1805
void accesskit_node_clear_column_count(struct accesskit_node *node);
1806
1807
struct accesskit_opt_index accesskit_node_row_index(
1808
const struct accesskit_node *node);
1809
1810
void accesskit_node_set_row_index(struct accesskit_node *node, size_t value);
1811
1812
void accesskit_node_clear_row_index(struct accesskit_node *node);
1813
1814
struct accesskit_opt_index accesskit_node_column_index(
1815
const struct accesskit_node *node);
1816
1817
void accesskit_node_set_column_index(struct accesskit_node *node, size_t value);
1818
1819
void accesskit_node_clear_column_index(struct accesskit_node *node);
1820
1821
struct accesskit_opt_index accesskit_node_row_span(
1822
const struct accesskit_node *node);
1823
1824
void accesskit_node_set_row_span(struct accesskit_node *node, size_t value);
1825
1826
void accesskit_node_clear_row_span(struct accesskit_node *node);
1827
1828
struct accesskit_opt_index accesskit_node_column_span(
1829
const struct accesskit_node *node);
1830
1831
void accesskit_node_set_column_span(struct accesskit_node *node, size_t value);
1832
1833
void accesskit_node_clear_column_span(struct accesskit_node *node);
1834
1835
struct accesskit_opt_index accesskit_node_level(
1836
const struct accesskit_node *node);
1837
1838
void accesskit_node_set_level(struct accesskit_node *node, size_t value);
1839
1840
void accesskit_node_clear_level(struct accesskit_node *node);
1841
1842
struct accesskit_opt_index accesskit_node_size_of_set(
1843
const struct accesskit_node *node);
1844
1845
void accesskit_node_set_size_of_set(struct accesskit_node *node, size_t value);
1846
1847
void accesskit_node_clear_size_of_set(struct accesskit_node *node);
1848
1849
struct accesskit_opt_index accesskit_node_position_in_set(
1850
const struct accesskit_node *node);
1851
1852
void accesskit_node_set_position_in_set(struct accesskit_node *node,
1853
size_t value);
1854
1855
void accesskit_node_clear_position_in_set(struct accesskit_node *node);
1856
1857
struct accesskit_opt_color accesskit_node_color_value(
1858
const struct accesskit_node *node);
1859
1860
void accesskit_node_set_color_value(struct accesskit_node *node,
1861
uint32_t value);
1862
1863
void accesskit_node_clear_color_value(struct accesskit_node *node);
1864
1865
struct accesskit_opt_color accesskit_node_background_color(
1866
const struct accesskit_node *node);
1867
1868
void accesskit_node_set_background_color(struct accesskit_node *node,
1869
uint32_t value);
1870
1871
void accesskit_node_clear_background_color(struct accesskit_node *node);
1872
1873
struct accesskit_opt_color accesskit_node_foreground_color(
1874
const struct accesskit_node *node);
1875
1876
void accesskit_node_set_foreground_color(struct accesskit_node *node,
1877
uint32_t value);
1878
1879
void accesskit_node_clear_foreground_color(struct accesskit_node *node);
1880
1881
struct accesskit_opt_text_decoration accesskit_node_overline(
1882
const struct accesskit_node *node);
1883
1884
void accesskit_node_set_overline(struct accesskit_node *node,
1885
accesskit_text_decoration value);
1886
1887
void accesskit_node_clear_overline(struct accesskit_node *node);
1888
1889
struct accesskit_opt_text_decoration accesskit_node_strikethrough(
1890
const struct accesskit_node *node);
1891
1892
void accesskit_node_set_strikethrough(struct accesskit_node *node,
1893
accesskit_text_decoration value);
1894
1895
void accesskit_node_clear_strikethrough(struct accesskit_node *node);
1896
1897
struct accesskit_opt_text_decoration accesskit_node_underline(
1898
const struct accesskit_node *node);
1899
1900
void accesskit_node_set_underline(struct accesskit_node *node,
1901
accesskit_text_decoration value);
1902
1903
void accesskit_node_clear_underline(struct accesskit_node *node);
1904
1905
struct accesskit_lengths accesskit_node_character_lengths(
1906
const struct accesskit_node *node);
1907
1908
/**
1909
* Caller is responsible for freeing `values`.
1910
*/
1911
void accesskit_node_set_character_lengths(struct accesskit_node *node,
1912
size_t length, const uint8_t *values);
1913
1914
void accesskit_node_clear_character_lengths(struct accesskit_node *node);
1915
1916
struct accesskit_lengths accesskit_node_word_lengths(
1917
const struct accesskit_node *node);
1918
1919
/**
1920
* Caller is responsible for freeing `values`.
1921
*/
1922
void accesskit_node_set_word_lengths(struct accesskit_node *node, size_t length,
1923
const uint8_t *values);
1924
1925
void accesskit_node_clear_word_lengths(struct accesskit_node *node);
1926
1927
struct accesskit_opt_coords accesskit_node_character_positions(
1928
const struct accesskit_node *node);
1929
1930
/**
1931
* Caller is responsible for freeing `values`.
1932
*/
1933
void accesskit_node_set_character_positions(struct accesskit_node *node,
1934
size_t length, const float *values);
1935
1936
void accesskit_node_clear_character_positions(struct accesskit_node *node);
1937
1938
struct accesskit_opt_coords accesskit_node_character_widths(
1939
const struct accesskit_node *node);
1940
1941
/**
1942
* Caller is responsible for freeing `values`.
1943
*/
1944
void accesskit_node_set_character_widths(struct accesskit_node *node,
1945
size_t length, const float *values);
1946
1947
void accesskit_node_clear_character_widths(struct accesskit_node *node);
1948
1949
struct accesskit_opt_bool accesskit_node_is_expanded(
1950
const struct accesskit_node *node);
1951
1952
void accesskit_node_set_expanded(struct accesskit_node *node, bool value);
1953
1954
void accesskit_node_clear_expanded(struct accesskit_node *node);
1955
1956
struct accesskit_opt_bool accesskit_node_is_selected(
1957
const struct accesskit_node *node);
1958
1959
void accesskit_node_set_selected(struct accesskit_node *node, bool value);
1960
1961
void accesskit_node_clear_selected(struct accesskit_node *node);
1962
1963
struct accesskit_opt_invalid accesskit_node_invalid(
1964
const struct accesskit_node *node);
1965
1966
void accesskit_node_set_invalid(struct accesskit_node *node,
1967
accesskit_invalid value);
1968
1969
void accesskit_node_clear_invalid(struct accesskit_node *node);
1970
1971
struct accesskit_opt_toggled accesskit_node_toggled(
1972
const struct accesskit_node *node);
1973
1974
void accesskit_node_set_toggled(struct accesskit_node *node,
1975
accesskit_toggled value);
1976
1977
void accesskit_node_clear_toggled(struct accesskit_node *node);
1978
1979
struct accesskit_opt_live accesskit_node_live(
1980
const struct accesskit_node *node);
1981
1982
void accesskit_node_set_live(struct accesskit_node *node, accesskit_live value);
1983
1984
void accesskit_node_clear_live(struct accesskit_node *node);
1985
1986
struct accesskit_opt_text_direction accesskit_node_text_direction(
1987
const struct accesskit_node *node);
1988
1989
void accesskit_node_set_text_direction(struct accesskit_node *node,
1990
accesskit_text_direction value);
1991
1992
void accesskit_node_clear_text_direction(struct accesskit_node *node);
1993
1994
struct accesskit_opt_orientation accesskit_node_orientation(
1995
const struct accesskit_node *node);
1996
1997
void accesskit_node_set_orientation(struct accesskit_node *node,
1998
accesskit_orientation value);
1999
2000
void accesskit_node_clear_orientation(struct accesskit_node *node);
2001
2002
struct accesskit_opt_sort_direction accesskit_node_sort_direction(
2003
const struct accesskit_node *node);
2004
2005
void accesskit_node_set_sort_direction(struct accesskit_node *node,
2006
accesskit_sort_direction value);
2007
2008
void accesskit_node_clear_sort_direction(struct accesskit_node *node);
2009
2010
struct accesskit_opt_aria_current accesskit_node_aria_current(
2011
const struct accesskit_node *node);
2012
2013
void accesskit_node_set_aria_current(struct accesskit_node *node,
2014
accesskit_aria_current value);
2015
2016
void accesskit_node_clear_aria_current(struct accesskit_node *node);
2017
2018
struct accesskit_opt_auto_complete accesskit_node_auto_complete(
2019
const struct accesskit_node *node);
2020
2021
void accesskit_node_set_auto_complete(struct accesskit_node *node,
2022
accesskit_auto_complete value);
2023
2024
void accesskit_node_clear_auto_complete(struct accesskit_node *node);
2025
2026
struct accesskit_opt_has_popup accesskit_node_has_popup(
2027
const struct accesskit_node *node);
2028
2029
void accesskit_node_set_has_popup(struct accesskit_node *node,
2030
accesskit_has_popup value);
2031
2032
void accesskit_node_clear_has_popup(struct accesskit_node *node);
2033
2034
struct accesskit_opt_list_style accesskit_node_list_style(
2035
const struct accesskit_node *node);
2036
2037
void accesskit_node_set_list_style(struct accesskit_node *node,
2038
accesskit_list_style value);
2039
2040
void accesskit_node_clear_list_style(struct accesskit_node *node);
2041
2042
struct accesskit_opt_text_align accesskit_node_text_align(
2043
const struct accesskit_node *node);
2044
2045
void accesskit_node_set_text_align(struct accesskit_node *node,
2046
accesskit_text_align value);
2047
2048
void accesskit_node_clear_text_align(struct accesskit_node *node);
2049
2050
struct accesskit_opt_vertical_offset accesskit_node_vertical_offset(
2051
const struct accesskit_node *node);
2052
2053
void accesskit_node_set_vertical_offset(struct accesskit_node *node,
2054
accesskit_vertical_offset value);
2055
2056
void accesskit_node_clear_vertical_offset(struct accesskit_node *node);
2057
2058
const struct accesskit_affine *accesskit_node_transform(
2059
const struct accesskit_node *node);
2060
2061
void accesskit_node_set_transform(struct accesskit_node *node,
2062
struct accesskit_affine value);
2063
2064
void accesskit_node_clear_transform(struct accesskit_node *node);
2065
2066
struct accesskit_opt_rect accesskit_node_bounds(
2067
const struct accesskit_node *node);
2068
2069
void accesskit_node_set_bounds(struct accesskit_node *node,
2070
struct accesskit_rect value);
2071
2072
void accesskit_node_clear_bounds(struct accesskit_node *node);
2073
2074
struct accesskit_opt_text_selection accesskit_node_text_selection(
2075
const struct accesskit_node *node);
2076
2077
void accesskit_node_set_text_selection(struct accesskit_node *node,
2078
struct accesskit_text_selection value);
2079
2080
void accesskit_node_clear_text_selection(struct accesskit_node *node);
2081
2082
struct accesskit_custom_action *accesskit_custom_action_new(int32_t id);
2083
2084
void accesskit_custom_action_free(struct accesskit_custom_action *action);
2085
2086
int32_t accesskit_custom_action_id(
2087
const struct accesskit_custom_action *action);
2088
2089
void accesskit_custom_action_set_id(struct accesskit_custom_action *action,
2090
int32_t id);
2091
2092
/**
2093
* Caller must call `accesskit_string_free` with the return value.
2094
*/
2095
char *accesskit_custom_action_description(
2096
const struct accesskit_custom_action *action);
2097
2098
/**
2099
* Caller is responsible for freeing the memory pointed by `description`.
2100
*/
2101
void accesskit_custom_action_set_description(
2102
struct accesskit_custom_action *action, const char *description);
2103
2104
/**
2105
* Caller is responsible for freeing the memory pointed by `description`.
2106
*/
2107
void accesskit_custom_action_set_description_with_length(
2108
struct accesskit_custom_action *action, const char *description,
2109
size_t length);
2110
2111
void accesskit_custom_actions_free(struct accesskit_custom_actions *value);
2112
2113
/**
2114
* Caller must call `accesskit_custom_actions_free` with the return value.
2115
*/
2116
struct accesskit_custom_actions *accesskit_node_custom_actions(
2117
const struct accesskit_node *node);
2118
2119
/**
2120
* Caller is responsible for freeing each `custom_action` in the array.
2121
*/
2122
void accesskit_node_set_custom_actions(
2123
struct accesskit_node *node, size_t length,
2124
struct accesskit_custom_action *const *values);
2125
2126
/**
2127
* Takes ownership of `action`.
2128
*/
2129
void accesskit_node_push_custom_action(struct accesskit_node *node,
2130
struct accesskit_custom_action *action);
2131
2132
void accesskit_node_clear_custom_actions(struct accesskit_node *node);
2133
2134
struct accesskit_node *accesskit_node_new(accesskit_role role);
2135
2136
void accesskit_node_free(struct accesskit_node *node);
2137
2138
/**
2139
* Caller must call `accesskit_string_free` with the return value.
2140
*/
2141
char *accesskit_node_debug(const struct accesskit_node *node);
2142
2143
struct accesskit_tree *accesskit_tree_new(accesskit_node_id root);
2144
2145
void accesskit_tree_free(struct accesskit_tree *tree);
2146
2147
/**
2148
* Caller must call `accesskit_string_free` with the return value.
2149
*/
2150
char *accesskit_tree_get_toolkit_name(const struct accesskit_tree *tree);
2151
2152
/**
2153
* Caller is responsible for freeing the memory pointed by `toolkit_name`
2154
*/
2155
void accesskit_tree_set_toolkit_name(struct accesskit_tree *tree,
2156
const char *toolkit_name);
2157
2158
/**
2159
* Caller is responsible for freeing the memory pointed by `toolkit_name`
2160
*/
2161
void accesskit_tree_set_toolkit_name_with_length(struct accesskit_tree *tree,
2162
const char *toolkit_name,
2163
size_t length);
2164
2165
void accesskit_tree_clear_toolkit_name(struct accesskit_tree *tree);
2166
2167
/**
2168
* Caller must call `accesskit_string_free` with the return value.
2169
*/
2170
char *accesskit_tree_get_toolkit_version(const struct accesskit_tree *tree);
2171
2172
/**
2173
* Caller is responsible for freeing the memory pointed by `toolkit_version`
2174
*/
2175
void accesskit_tree_set_toolkit_version(struct accesskit_tree *tree,
2176
const char *toolkit_version);
2177
2178
/**
2179
* Caller is responsible for freeing the memory pointed by `toolkit_version`
2180
*/
2181
void accesskit_tree_set_toolkit_version_with_length(struct accesskit_tree *tree,
2182
const char *toolkit_version,
2183
size_t length);
2184
2185
void accesskit_tree_clear_toolkit_version(struct accesskit_tree *tree);
2186
2187
/**
2188
* Caller must call `accesskit_string_free` with the return value.
2189
*/
2190
char *accesskit_tree_debug(const struct accesskit_tree *tree);
2191
2192
struct accesskit_tree_update *accesskit_tree_update_with_focus(
2193
accesskit_node_id focus);
2194
2195
struct accesskit_tree_update *accesskit_tree_update_with_capacity_and_focus(
2196
size_t capacity, accesskit_node_id focus);
2197
2198
void accesskit_tree_update_free(struct accesskit_tree_update *update);
2199
2200
/**
2201
* Appends the provided node to the tree update's list of nodes.
2202
* Takes ownership of `node`.
2203
*/
2204
void accesskit_tree_update_push_node(struct accesskit_tree_update *update,
2205
accesskit_node_id id,
2206
struct accesskit_node *node);
2207
2208
void accesskit_tree_update_set_tree(struct accesskit_tree_update *update,
2209
struct accesskit_tree *tree);
2210
2211
void accesskit_tree_update_clear_tree(struct accesskit_tree_update *update);
2212
2213
void accesskit_tree_update_set_focus(struct accesskit_tree_update *update,
2214
accesskit_node_id focus);
2215
2216
/**
2217
* Caller must call `accesskit_string_free` with the return value.
2218
*/
2219
char *accesskit_tree_update_debug(
2220
const struct accesskit_tree_update *tree_update);
2221
2222
void accesskit_action_request_free(struct accesskit_action_request *request);
2223
2224
struct accesskit_affine accesskit_affine_identity(void);
2225
2226
struct accesskit_affine accesskit_affine_flip_y(void);
2227
2228
struct accesskit_affine accesskit_affine_flip_x(void);
2229
2230
struct accesskit_affine accesskit_affine_scale(double s);
2231
2232
struct accesskit_affine accesskit_affine_scale_non_uniform(double s_x,
2233
double s_y);
2234
2235
struct accesskit_affine accesskit_affine_translate(struct accesskit_vec2 p);
2236
2237
struct accesskit_affine accesskit_affine_map_unit_square(
2238
struct accesskit_rect rect);
2239
2240
double accesskit_affine_determinant(struct accesskit_affine affine);
2241
2242
struct accesskit_affine accesskit_affine_inverse(
2243
struct accesskit_affine affine);
2244
2245
struct accesskit_rect accesskit_affine_transform_rect_bbox(
2246
struct accesskit_affine affine, struct accesskit_rect rect);
2247
2248
bool accesskit_affine_is_finite(const struct accesskit_affine *affine);
2249
2250
bool accesskit_affine_is_nan(const struct accesskit_affine *affine);
2251
2252
struct accesskit_affine accesskit_affine_mul(struct accesskit_affine a,
2253
struct accesskit_affine b);
2254
2255
struct accesskit_point accesskit_affine_transform_point(
2256
struct accesskit_affine affine, struct accesskit_point point);
2257
2258
struct accesskit_vec2 accesskit_point_to_vec2(struct accesskit_point point);
2259
2260
struct accesskit_point accesskit_point_add_vec2(struct accesskit_point point,
2261
struct accesskit_vec2 vec);
2262
2263
struct accesskit_point accesskit_point_sub_vec2(struct accesskit_point point,
2264
struct accesskit_vec2 vec);
2265
2266
struct accesskit_vec2 accesskit_point_sub_point(struct accesskit_point a,
2267
struct accesskit_point b);
2268
2269
struct accesskit_rect accesskit_rect_new(double x0, double y0, double x1,
2270
double y1);
2271
2272
struct accesskit_rect accesskit_rect_from_points(struct accesskit_point p0,
2273
struct accesskit_point p1);
2274
2275
struct accesskit_rect accesskit_rect_from_origin_size(
2276
struct accesskit_point origin, struct accesskit_size size);
2277
2278
struct accesskit_rect accesskit_rect_with_origin(struct accesskit_rect rect,
2279
struct accesskit_point origin);
2280
2281
struct accesskit_rect accesskit_rect_with_size(struct accesskit_rect rect,
2282
struct accesskit_size size);
2283
2284
double accesskit_rect_width(const struct accesskit_rect *rect);
2285
2286
double accesskit_rect_height(const struct accesskit_rect *rect);
2287
2288
double accesskit_rect_min_x(const struct accesskit_rect *rect);
2289
2290
double accesskit_rect_max_x(const struct accesskit_rect *rect);
2291
2292
double accesskit_rect_min_y(const struct accesskit_rect *rect);
2293
2294
double accesskit_rect_max_y(const struct accesskit_rect *rect);
2295
2296
struct accesskit_point accesskit_rect_origin(const struct accesskit_rect *rect);
2297
2298
struct accesskit_size accesskit_rect_size(const struct accesskit_rect *rect);
2299
2300
struct accesskit_rect accesskit_rect_abs(const struct accesskit_rect *rect);
2301
2302
double accesskit_rect_area(const struct accesskit_rect *rect);
2303
2304
bool accesskit_rect_is_empty(const struct accesskit_rect *rect);
2305
2306
bool accesskit_rect_contains(const struct accesskit_rect *rect,
2307
struct accesskit_point point);
2308
2309
struct accesskit_rect accesskit_rect_union(const struct accesskit_rect *rect,
2310
struct accesskit_rect other);
2311
2312
struct accesskit_rect accesskit_rect_union_pt(const struct accesskit_rect *rect,
2313
struct accesskit_point pt);
2314
2315
struct accesskit_rect accesskit_rect_intersect(
2316
const struct accesskit_rect *rect, struct accesskit_rect other);
2317
2318
struct accesskit_rect accesskit_rect_translate(
2319
struct accesskit_rect rect, struct accesskit_vec2 translation);
2320
2321
struct accesskit_vec2 accesskit_size_to_vec2(struct accesskit_size size);
2322
2323
struct accesskit_size accesskit_size_scale(struct accesskit_size size,
2324
double scalar);
2325
2326
struct accesskit_size accesskit_size_add(struct accesskit_size a,
2327
struct accesskit_size b);
2328
2329
struct accesskit_size accesskit_size_sub(struct accesskit_size a,
2330
struct accesskit_size b);
2331
2332
struct accesskit_point accesskit_vec2_to_point(struct accesskit_vec2 vec2);
2333
2334
struct accesskit_size accesskit_vec2_to_size(struct accesskit_vec2 vec2);
2335
2336
struct accesskit_vec2 accesskit_vec2_add(struct accesskit_vec2 a,
2337
struct accesskit_vec2 b);
2338
2339
struct accesskit_vec2 accesskit_vec2_sub(struct accesskit_vec2 a,
2340
struct accesskit_vec2 b);
2341
2342
struct accesskit_vec2 accesskit_vec2_scale(struct accesskit_vec2 vec,
2343
double scalar);
2344
2345
struct accesskit_vec2 accesskit_vec2_neg(struct accesskit_vec2 vec);
2346
2347
#if defined(__APPLE__)
2348
/**
2349
* Memory is also freed when calling this function.
2350
*/
2351
void accesskit_macos_queued_events_raise(
2352
struct accesskit_macos_queued_events *events);
2353
#endif
2354
2355
#if defined(__APPLE__)
2356
/**
2357
* # Safety
2358
*
2359
* `view` must be a valid, unreleased pointer to an `NSView`.
2360
*/
2361
struct accesskit_macos_adapter *accesskit_macos_adapter_new(
2362
void *view, bool is_view_focused,
2363
accesskit_action_handler_callback action_handler,
2364
void *action_handler_userdata);
2365
#endif
2366
2367
#if defined(__APPLE__)
2368
void accesskit_macos_adapter_free(struct accesskit_macos_adapter *adapter);
2369
#endif
2370
2371
#if defined(__APPLE__)
2372
/**
2373
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2374
* It can be null if the adapter is not active.
2375
*/
2376
struct accesskit_macos_queued_events *accesskit_macos_adapter_update_if_active(
2377
struct accesskit_macos_adapter *adapter,
2378
accesskit_tree_update_factory update_factory,
2379
void *update_factory_userdata);
2380
#endif
2381
2382
#if defined(__APPLE__)
2383
/**
2384
* Update the tree state based on whether the window is focused.
2385
*
2386
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2387
* It can be null if the adapter is not active.
2388
*/
2389
struct accesskit_macos_queued_events *
2390
accesskit_macos_adapter_update_view_focus_state(
2391
struct accesskit_macos_adapter *adapter, bool is_focused);
2392
#endif
2393
2394
#if defined(__APPLE__)
2395
/**
2396
* Returns a pointer to an `NSArray`. Ownership of the pointer is not
2397
* transferred.
2398
*/
2399
void *accesskit_macos_adapter_view_children(
2400
struct accesskit_macos_adapter *adapter,
2401
accesskit_activation_handler_callback activation_handler,
2402
void *activation_handler_userdata);
2403
#endif
2404
2405
#if defined(__APPLE__)
2406
/**
2407
* Returns a pointer to an `NSObject`. Ownership of the pointer is not
2408
* transferred.
2409
*/
2410
void *accesskit_macos_adapter_focus(
2411
struct accesskit_macos_adapter *adapter,
2412
accesskit_activation_handler_callback activation_handler,
2413
void *activation_handler_userdata);
2414
#endif
2415
2416
#if defined(__APPLE__)
2417
/**
2418
* Returns a pointer to an `NSObject`. Ownership of the pointer is not
2419
* transferred.
2420
*/
2421
void *accesskit_macos_adapter_hit_test(
2422
struct accesskit_macos_adapter *adapter, double x, double y,
2423
accesskit_activation_handler_callback activation_handler,
2424
void *activation_handler_userdata);
2425
#endif
2426
2427
#if defined(__APPLE__)
2428
/**
2429
* Caller must call `accesskit_string_free` with the return value.
2430
*/
2431
char *accesskit_macos_adapter_debug(
2432
const struct accesskit_macos_adapter *adapter);
2433
#endif
2434
2435
#if defined(__APPLE__)
2436
/**
2437
* # Safety
2438
*
2439
* `view` must be a valid, unreleased pointer to an `NSView`.
2440
*/
2441
struct accesskit_macos_subclassing_adapter *
2442
accesskit_macos_subclassing_adapter_new(
2443
void *view, accesskit_activation_handler_callback activation_handler,
2444
void *activation_handler_userdata,
2445
accesskit_action_handler_callback action_handler,
2446
void *action_handler_userdata);
2447
#endif
2448
2449
#if defined(__APPLE__)
2450
/**
2451
* # Safety
2452
*
2453
* `window` must be a valid, unreleased pointer to an `NSWindow`.
2454
*
2455
* # Panics
2456
*
2457
* This function panics if the specified window doesn't currently have
2458
* a content view.
2459
*/
2460
struct accesskit_macos_subclassing_adapter *
2461
accesskit_macos_subclassing_adapter_for_window(
2462
void *window, accesskit_activation_handler_callback activation_handler,
2463
void *activation_handler_userdata,
2464
accesskit_action_handler_callback action_handler,
2465
void *action_handler_userdata);
2466
#endif
2467
2468
#if defined(__APPLE__)
2469
void accesskit_macos_subclassing_adapter_free(
2470
struct accesskit_macos_subclassing_adapter *adapter);
2471
#endif
2472
2473
#if defined(__APPLE__)
2474
/**
2475
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2476
* It can be null if the adapter is not active.
2477
*/
2478
struct accesskit_macos_queued_events *
2479
accesskit_macos_subclassing_adapter_update_if_active(
2480
struct accesskit_macos_subclassing_adapter *adapter,
2481
accesskit_tree_update_factory update_factory,
2482
void *update_factory_userdata);
2483
#endif
2484
2485
#if defined(__APPLE__)
2486
/**
2487
* Update the tree state based on whether the window is focused.
2488
*
2489
* You must call `accesskit_macos_queued_events_raise` on the returned pointer.
2490
* It can be null if the adapter is not active.
2491
*/
2492
struct accesskit_macos_queued_events *
2493
accesskit_macos_subclassing_adapter_update_view_focus_state(
2494
struct accesskit_macos_subclassing_adapter *adapter, bool is_focused);
2495
#endif
2496
2497
#if defined(__APPLE__)
2498
/**
2499
* Modifies the specified class, which must be a subclass of `NSWindow`,
2500
* to include an `accessibilityFocusedUIElement` method that calls
2501
* the corresponding method on the window's content view. This is needed
2502
* for windowing libraries such as SDL that place the keyboard focus
2503
* directly on the window rather than the content view.
2504
*
2505
* # Safety
2506
*
2507
* This function is declared unsafe because the caller must ensure that the
2508
* code for this library is never unloaded from the application process,
2509
* since it's not possible to reverse this operation. It's safest
2510
* if this library is statically linked into the application's main executable.
2511
* Also, this function assumes that the specified class is a subclass
2512
* of `NSWindow`.
2513
*/
2514
void accesskit_macos_add_focus_forwarder_to_window_class(
2515
const char *class_name);
2516
#endif
2517
2518
#if defined(__APPLE__)
2519
/**
2520
* Modifies the specified class, which must be a subclass of `NSWindow`,
2521
* to include an `accessibilityFocusedUIElement` method that calls
2522
* the corresponding method on the window's content view. This is needed
2523
* for windowing libraries such as SDL that place the keyboard focus
2524
* directly on the window rather than the content view.
2525
* Caller is responsible for freeing `class_name`.
2526
*
2527
* # Safety
2528
*
2529
* This function is declared unsafe because the caller must ensure that the
2530
* code for this library is never unloaded from the application process,
2531
* since it's not possible to reverse this operation. It's safest
2532
* if this library is statically linked into the application's main executable.
2533
* Also, this function assumes that the specified class is a subclass
2534
* of `NSWindow`.
2535
*/
2536
void accesskit_macos_add_focus_forwarder_to_window_class_with_length(
2537
const char *class_name, size_t length);
2538
#endif
2539
2540
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2541
defined(__NetBSD__) || defined(__OpenBSD__))
2542
/**
2543
* All of the handlers will always be called from another thread.
2544
*/
2545
struct accesskit_unix_adapter *accesskit_unix_adapter_new(
2546
accesskit_activation_handler_callback activation_handler,
2547
void *activation_handler_userdata,
2548
accesskit_action_handler_callback action_handler,
2549
void *action_handler_userdata,
2550
accesskit_deactivation_handler_callback deactivation_handler,
2551
void *deactivation_handler_userdata);
2552
#endif
2553
2554
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2555
defined(__NetBSD__) || defined(__OpenBSD__))
2556
void accesskit_unix_adapter_free(struct accesskit_unix_adapter *adapter);
2557
#endif
2558
2559
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2560
defined(__NetBSD__) || defined(__OpenBSD__))
2561
/**
2562
* Set the bounds of the top-level window. The outer bounds contain any
2563
* window decoration and borders.
2564
*
2565
* # Caveats
2566
*
2567
* Since an application can not get the position of its window under
2568
* Wayland, calling this method only makes sense under X11.
2569
*/
2570
void accesskit_unix_adapter_set_root_window_bounds(
2571
struct accesskit_unix_adapter *adapter, struct accesskit_rect outer,
2572
struct accesskit_rect inner);
2573
#endif
2574
2575
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2576
defined(__NetBSD__) || defined(__OpenBSD__))
2577
void accesskit_unix_adapter_update_if_active(
2578
struct accesskit_unix_adapter *adapter,
2579
accesskit_tree_update_factory update_factory,
2580
void *update_factory_userdata);
2581
#endif
2582
2583
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2584
defined(__NetBSD__) || defined(__OpenBSD__))
2585
/**
2586
* Update the tree state based on whether the window is focused.
2587
*/
2588
void accesskit_unix_adapter_update_window_focus_state(
2589
struct accesskit_unix_adapter *adapter, bool is_focused);
2590
#endif
2591
2592
#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
2593
defined(__NetBSD__) || defined(__OpenBSD__))
2594
/**
2595
* Caller must call `accesskit_string_free` with the return value.
2596
*/
2597
char *accesskit_unix_adapter_debug(
2598
const struct accesskit_unix_adapter *adapter);
2599
#endif
2600
2601
#if defined(_WIN32)
2602
/**
2603
* Memory is also freed when calling this function.
2604
*/
2605
void accesskit_windows_queued_events_raise(
2606
struct accesskit_windows_queued_events *events);
2607
#endif
2608
2609
#if defined(_WIN32)
2610
struct accesskit_windows_adapter *accesskit_windows_adapter_new(
2611
HWND hwnd, bool is_window_focused,
2612
accesskit_action_handler_callback action_handler,
2613
void *action_handler_userdata);
2614
#endif
2615
2616
#if defined(_WIN32)
2617
void accesskit_windows_adapter_free(struct accesskit_windows_adapter *adapter);
2618
#endif
2619
2620
#if defined(_WIN32)
2621
/**
2622
* You must call `accesskit_windows_queued_events_raise` on the returned
2623
* pointer. It can be null if the adapter is not active.
2624
*/
2625
struct accesskit_windows_queued_events *
2626
accesskit_windows_adapter_update_if_active(
2627
struct accesskit_windows_adapter *adapter,
2628
accesskit_tree_update_factory update_factory,
2629
void *update_factory_userdata);
2630
#endif
2631
2632
#if defined(_WIN32)
2633
/**
2634
* Update the tree state based on whether the window is focused.
2635
*
2636
* You must call `accesskit_windows_queued_events_raise` on the returned
2637
* pointer.
2638
*/
2639
struct accesskit_windows_queued_events *
2640
accesskit_windows_adapter_update_window_focus_state(
2641
struct accesskit_windows_adapter *adapter, bool is_focused);
2642
#endif
2643
2644
#if defined(_WIN32)
2645
struct accesskit_opt_lresult accesskit_windows_adapter_handle_wm_getobject(
2646
struct accesskit_windows_adapter *adapter, WPARAM wparam, LPARAM lparam,
2647
accesskit_activation_handler_callback activation_handler,
2648
void *activation_handler_userdata);
2649
#endif
2650
2651
#if defined(_WIN32)
2652
/**
2653
* Caller must call `accesskit_string_free` with the return value.
2654
*/
2655
char *accesskit_windows_adapter_debug(
2656
const struct accesskit_windows_adapter *adapter);
2657
#endif
2658
2659
#if defined(_WIN32)
2660
/**
2661
* Creates a new Windows platform adapter using window subclassing.
2662
* This must be done before the window is shown or focused
2663
* for the first time.
2664
*
2665
* This must be called on the thread that owns the window. The activation
2666
* handler will always be called on that thread. The action handler
2667
* may or may not be called on that thread.
2668
*
2669
* # Panics
2670
*
2671
* Panics if the window is already visible.
2672
*/
2673
struct accesskit_windows_subclassing_adapter *
2674
accesskit_windows_subclassing_adapter_new(
2675
HWND hwnd, accesskit_activation_handler_callback activation_handler,
2676
void *activation_handler_userdata,
2677
accesskit_action_handler_callback action_handler,
2678
void *action_handler_userdata);
2679
#endif
2680
2681
#if defined(_WIN32)
2682
void accesskit_windows_subclassing_adapter_free(
2683
struct accesskit_windows_subclassing_adapter *adapter);
2684
#endif
2685
2686
#if defined(_WIN32)
2687
/**
2688
* You must call `accesskit_windows_queued_events_raise` on the returned
2689
* pointer. It can be null if the adapter is not active.
2690
*/
2691
struct accesskit_windows_queued_events *
2692
accesskit_windows_subclassing_adapter_update_if_active(
2693
struct accesskit_windows_subclassing_adapter *adapter,
2694
accesskit_tree_update_factory update_factory,
2695
void *update_factory_userdata);
2696
#endif
2697
2698
#ifdef __cplusplus
2699
} // extern "C"
2700
#endif // __cplusplus
2701
2702
#endif /* ACCESSKIT_H */
2703
2704