Path: blob/master/thirdparty/accesskit/include/accesskit.h
20851 views
/**1* Copyright 2023 The AccessKit Authors. All rights reserved.2* Licensed under the Apache License, Version 2.0 (found in3* the LICENSE-APACHE file) or the MIT license (found in4* the LICENSE-MIT file), at your option.5*/67#ifndef ACCESSKIT_H8#define ACCESSKIT_H910#include <stdarg.h>11#include <stdbool.h>12#include <stddef.h>13#include <stdint.h>14#include <stdlib.h>15#ifdef _WIN3216#include <windows.h>17#endif1819/**20* An action to be taken on an accessibility node.21*/22enum accesskit_action23#ifdef __cplusplus24: uint8_t25#endif // __cplusplus26{27/**28* Do the equivalent of a single click or tap.29*/30ACCESSKIT_ACTION_CLICK,31ACCESSKIT_ACTION_FOCUS,32ACCESSKIT_ACTION_BLUR,33ACCESSKIT_ACTION_COLLAPSE,34ACCESSKIT_ACTION_EXPAND,35/**36* Requires [`ActionRequest::data`] to be set to [`ActionData::CustomAction`].37*/38ACCESSKIT_ACTION_CUSTOM_ACTION,39/**40* Decrement a numeric value by one step.41*/42ACCESSKIT_ACTION_DECREMENT,43/**44* Increment a numeric value by one step.45*/46ACCESSKIT_ACTION_INCREMENT,47ACCESSKIT_ACTION_HIDE_TOOLTIP,48ACCESSKIT_ACTION_SHOW_TOOLTIP,49/**50* Delete any selected text in the control's text value and51* insert the specified value in its place, like when typing or pasting.52* Requires [`ActionRequest::data`] to be set to [`ActionData::Value`].53*/54ACCESSKIT_ACTION_REPLACE_SELECTED_TEXT,55/**56* Scroll down by the specified unit.57*/58ACCESSKIT_ACTION_SCROLL_DOWN,59/**60* Scroll left by the specified unit.61*/62ACCESSKIT_ACTION_SCROLL_LEFT,63/**64* Scroll right by the specified unit.65*/66ACCESSKIT_ACTION_SCROLL_RIGHT,67/**68* Scroll up by the specified unit.69*/70ACCESSKIT_ACTION_SCROLL_UP,71/**72* Scroll any scrollable containers to make the target node visible.73* Optionally set [`ActionRequest::data`] to [`ActionData::ScrollHint`].74*/75ACCESSKIT_ACTION_SCROLL_INTO_VIEW,76/**77* Scroll the given object to a specified point in the tree's container78* (e.g. window). Requires [`ActionRequest::data`] to be set to79* [`ActionData::ScrollToPoint`].80*/81ACCESSKIT_ACTION_SCROLL_TO_POINT,82/**83* Requires [`ActionRequest::data`] to be set to84* [`ActionData::SetScrollOffset`].85*/86ACCESSKIT_ACTION_SET_SCROLL_OFFSET,87/**88* Requires [`ActionRequest::data`] to be set to89* [`ActionData::SetTextSelection`].90*/91ACCESSKIT_ACTION_SET_TEXT_SELECTION,92/**93* Don't focus this node, but set it as the sequential focus navigation94* starting point, so that pressing Tab moves to the next element95* following this one, for example.96*/97ACCESSKIT_ACTION_SET_SEQUENTIAL_FOCUS_NAVIGATION_STARTING_POINT,98/**99* Replace the value of the control with the specified value and100* reset the selection, if applicable. Requires [`ActionRequest::data`]101* to be set to [`ActionData::Value`] or [`ActionData::NumericValue`].102*/103ACCESSKIT_ACTION_SET_VALUE,104ACCESSKIT_ACTION_SHOW_CONTEXT_MENU,105};106#ifndef __cplusplus107typedef uint8_t accesskit_action;108#endif // __cplusplus109110enum accesskit_aria_current111#ifdef __cplusplus112: uint8_t113#endif // __cplusplus114{115ACCESSKIT_ARIA_CURRENT_FALSE,116ACCESSKIT_ARIA_CURRENT_TRUE,117ACCESSKIT_ARIA_CURRENT_PAGE,118ACCESSKIT_ARIA_CURRENT_STEP,119ACCESSKIT_ARIA_CURRENT_LOCATION,120ACCESSKIT_ARIA_CURRENT_DATE,121ACCESSKIT_ARIA_CURRENT_TIME,122};123#ifndef __cplusplus124typedef uint8_t accesskit_aria_current;125#endif // __cplusplus126127enum accesskit_auto_complete128#ifdef __cplusplus129: uint8_t130#endif // __cplusplus131{132ACCESSKIT_AUTO_COMPLETE_INLINE,133ACCESSKIT_AUTO_COMPLETE_LIST,134ACCESSKIT_AUTO_COMPLETE_BOTH,135};136#ifndef __cplusplus137typedef uint8_t accesskit_auto_complete;138#endif // __cplusplus139140enum accesskit_has_popup141#ifdef __cplusplus142: uint8_t143#endif // __cplusplus144{145ACCESSKIT_HAS_POPUP_MENU,146ACCESSKIT_HAS_POPUP_LISTBOX,147ACCESSKIT_HAS_POPUP_TREE,148ACCESSKIT_HAS_POPUP_GRID,149ACCESSKIT_HAS_POPUP_DIALOG,150};151#ifndef __cplusplus152typedef uint8_t accesskit_has_popup;153#endif // __cplusplus154155/**156* Indicates if a form control has invalid input or if a web DOM element has an157* [`aria-invalid`] attribute.158*159* [`aria-invalid`]: https://www.w3.org/TR/wai-aria-1.1/#aria-invalid160*/161enum accesskit_invalid162#ifdef __cplusplus163: uint8_t164#endif // __cplusplus165{166ACCESSKIT_INVALID_TRUE,167ACCESSKIT_INVALID_GRAMMAR,168ACCESSKIT_INVALID_SPELLING,169};170#ifndef __cplusplus171typedef uint8_t accesskit_invalid;172#endif // __cplusplus173174enum accesskit_list_style175#ifdef __cplusplus176: uint8_t177#endif // __cplusplus178{179ACCESSKIT_LIST_STYLE_CIRCLE,180ACCESSKIT_LIST_STYLE_DISC,181ACCESSKIT_LIST_STYLE_IMAGE,182ACCESSKIT_LIST_STYLE_NUMERIC,183ACCESSKIT_LIST_STYLE_SQUARE,184/**185* Language specific ordering (alpha, roman, cjk-ideographic, etc...)186*/187ACCESSKIT_LIST_STYLE_OTHER,188};189#ifndef __cplusplus190typedef uint8_t accesskit_list_style;191#endif // __cplusplus192193enum accesskit_live194#ifdef __cplusplus195: uint8_t196#endif // __cplusplus197{198ACCESSKIT_LIVE_OFF,199ACCESSKIT_LIVE_POLITE,200ACCESSKIT_LIVE_ASSERTIVE,201};202#ifndef __cplusplus203typedef uint8_t accesskit_live;204#endif // __cplusplus205206enum accesskit_orientation207#ifdef __cplusplus208: uint8_t209#endif // __cplusplus210{211/**212* E.g. most toolbars and separators.213*/214ACCESSKIT_ORIENTATION_HORIZONTAL,215/**216* E.g. menu or combo box.217*/218ACCESSKIT_ORIENTATION_VERTICAL,219};220#ifndef __cplusplus221typedef uint8_t accesskit_orientation;222#endif // __cplusplus223224/**225* The type of an accessibility node.226*227* The majority of these roles come from the ARIA specification. Reference228* the latest draft for proper usage.229*230* Like the AccessKit schema as a whole, this list is largely taken231* from Chromium. However, unlike Chromium's alphabetized list, this list232* is ordered roughly by expected usage frequency (with the notable exception233* of [`Role::Unknown`]). This is more efficient in serialization formats234* where integers use a variable-length encoding.235*/236enum accesskit_role237#ifdef __cplusplus238: uint8_t239#endif // __cplusplus240{241ACCESSKIT_ROLE_UNKNOWN,242ACCESSKIT_ROLE_TEXT_RUN,243ACCESSKIT_ROLE_CELL,244ACCESSKIT_ROLE_LABEL,245ACCESSKIT_ROLE_IMAGE,246ACCESSKIT_ROLE_LINK,247ACCESSKIT_ROLE_ROW,248ACCESSKIT_ROLE_LIST_ITEM,249/**250* Contains the bullet, number, or other marker for a list item.251*/252ACCESSKIT_ROLE_LIST_MARKER,253ACCESSKIT_ROLE_TREE_ITEM,254ACCESSKIT_ROLE_LIST_BOX_OPTION,255ACCESSKIT_ROLE_MENU_ITEM,256ACCESSKIT_ROLE_MENU_LIST_OPTION,257ACCESSKIT_ROLE_PARAGRAPH,258/**259* A generic container that should be ignored by assistive technologies260* and filtered out of platform accessibility trees. Equivalent to the ARIA261* `none` or `presentation` role, or to an HTML `div` with no role.262*/263ACCESSKIT_ROLE_GENERIC_CONTAINER,264ACCESSKIT_ROLE_CHECK_BOX,265ACCESSKIT_ROLE_RADIO_BUTTON,266ACCESSKIT_ROLE_TEXT_INPUT,267ACCESSKIT_ROLE_BUTTON,268ACCESSKIT_ROLE_DEFAULT_BUTTON,269ACCESSKIT_ROLE_PANE,270ACCESSKIT_ROLE_ROW_HEADER,271ACCESSKIT_ROLE_COLUMN_HEADER,272ACCESSKIT_ROLE_ROW_GROUP,273ACCESSKIT_ROLE_LIST,274ACCESSKIT_ROLE_TABLE,275ACCESSKIT_ROLE_LAYOUT_TABLE_CELL,276ACCESSKIT_ROLE_LAYOUT_TABLE_ROW,277ACCESSKIT_ROLE_LAYOUT_TABLE,278ACCESSKIT_ROLE_SWITCH,279ACCESSKIT_ROLE_MENU,280ACCESSKIT_ROLE_MULTILINE_TEXT_INPUT,281ACCESSKIT_ROLE_SEARCH_INPUT,282ACCESSKIT_ROLE_DATE_INPUT,283ACCESSKIT_ROLE_DATE_TIME_INPUT,284ACCESSKIT_ROLE_WEEK_INPUT,285ACCESSKIT_ROLE_MONTH_INPUT,286ACCESSKIT_ROLE_TIME_INPUT,287ACCESSKIT_ROLE_EMAIL_INPUT,288ACCESSKIT_ROLE_NUMBER_INPUT,289ACCESSKIT_ROLE_PASSWORD_INPUT,290ACCESSKIT_ROLE_PHONE_NUMBER_INPUT,291ACCESSKIT_ROLE_URL_INPUT,292ACCESSKIT_ROLE_ABBR,293ACCESSKIT_ROLE_ALERT,294ACCESSKIT_ROLE_ALERT_DIALOG,295ACCESSKIT_ROLE_APPLICATION,296ACCESSKIT_ROLE_ARTICLE,297ACCESSKIT_ROLE_AUDIO,298ACCESSKIT_ROLE_BANNER,299ACCESSKIT_ROLE_BLOCKQUOTE,300ACCESSKIT_ROLE_CANVAS,301ACCESSKIT_ROLE_CAPTION,302ACCESSKIT_ROLE_CARET,303ACCESSKIT_ROLE_CODE,304ACCESSKIT_ROLE_COLOR_WELL,305ACCESSKIT_ROLE_COMBO_BOX,306ACCESSKIT_ROLE_EDITABLE_COMBO_BOX,307ACCESSKIT_ROLE_COMPLEMENTARY,308ACCESSKIT_ROLE_COMMENT,309ACCESSKIT_ROLE_CONTENT_DELETION,310ACCESSKIT_ROLE_CONTENT_INSERTION,311ACCESSKIT_ROLE_CONTENT_INFO,312ACCESSKIT_ROLE_DEFINITION,313ACCESSKIT_ROLE_DESCRIPTION_LIST,314ACCESSKIT_ROLE_DESCRIPTION_LIST_DETAIL,315ACCESSKIT_ROLE_DESCRIPTION_LIST_TERM,316ACCESSKIT_ROLE_DETAILS,317ACCESSKIT_ROLE_DIALOG,318ACCESSKIT_ROLE_DIRECTORY,319ACCESSKIT_ROLE_DISCLOSURE_TRIANGLE,320ACCESSKIT_ROLE_DOCUMENT,321ACCESSKIT_ROLE_EMBEDDED_OBJECT,322ACCESSKIT_ROLE_EMPHASIS,323ACCESSKIT_ROLE_FEED,324ACCESSKIT_ROLE_FIGURE_CAPTION,325ACCESSKIT_ROLE_FIGURE,326ACCESSKIT_ROLE_FOOTER,327ACCESSKIT_ROLE_FOOTER_AS_NON_LANDMARK,328ACCESSKIT_ROLE_FORM,329ACCESSKIT_ROLE_GRID,330ACCESSKIT_ROLE_GROUP,331ACCESSKIT_ROLE_HEADER,332ACCESSKIT_ROLE_HEADER_AS_NON_LANDMARK,333ACCESSKIT_ROLE_HEADING,334ACCESSKIT_ROLE_IFRAME,335ACCESSKIT_ROLE_IFRAME_PRESENTATIONAL,336ACCESSKIT_ROLE_IME_CANDIDATE,337ACCESSKIT_ROLE_KEYBOARD,338ACCESSKIT_ROLE_LEGEND,339ACCESSKIT_ROLE_LINE_BREAK,340ACCESSKIT_ROLE_LIST_BOX,341ACCESSKIT_ROLE_LOG,342ACCESSKIT_ROLE_MAIN,343ACCESSKIT_ROLE_MARK,344ACCESSKIT_ROLE_MARQUEE,345ACCESSKIT_ROLE_MATH,346ACCESSKIT_ROLE_MENU_BAR,347ACCESSKIT_ROLE_MENU_ITEM_CHECK_BOX,348ACCESSKIT_ROLE_MENU_ITEM_RADIO,349ACCESSKIT_ROLE_MENU_LIST_POPUP,350ACCESSKIT_ROLE_METER,351ACCESSKIT_ROLE_NAVIGATION,352ACCESSKIT_ROLE_NOTE,353ACCESSKIT_ROLE_PLUGIN_OBJECT,354ACCESSKIT_ROLE_PORTAL,355ACCESSKIT_ROLE_PRE,356ACCESSKIT_ROLE_PROGRESS_INDICATOR,357ACCESSKIT_ROLE_RADIO_GROUP,358ACCESSKIT_ROLE_REGION,359ACCESSKIT_ROLE_ROOT_WEB_AREA,360ACCESSKIT_ROLE_RUBY,361ACCESSKIT_ROLE_RUBY_ANNOTATION,362ACCESSKIT_ROLE_SCROLL_BAR,363ACCESSKIT_ROLE_SCROLL_VIEW,364ACCESSKIT_ROLE_SEARCH,365ACCESSKIT_ROLE_SECTION,366ACCESSKIT_ROLE_SLIDER,367ACCESSKIT_ROLE_SPIN_BUTTON,368ACCESSKIT_ROLE_SPLITTER,369ACCESSKIT_ROLE_STATUS,370ACCESSKIT_ROLE_STRONG,371ACCESSKIT_ROLE_SUGGESTION,372ACCESSKIT_ROLE_SVG_ROOT,373ACCESSKIT_ROLE_TAB,374ACCESSKIT_ROLE_TAB_LIST,375ACCESSKIT_ROLE_TAB_PANEL,376ACCESSKIT_ROLE_TERM,377ACCESSKIT_ROLE_TIME,378ACCESSKIT_ROLE_TIMER,379ACCESSKIT_ROLE_TITLE_BAR,380ACCESSKIT_ROLE_TOOLBAR,381ACCESSKIT_ROLE_TOOLTIP,382ACCESSKIT_ROLE_TREE,383ACCESSKIT_ROLE_TREE_GRID,384ACCESSKIT_ROLE_VIDEO,385ACCESSKIT_ROLE_WEB_VIEW,386ACCESSKIT_ROLE_WINDOW,387ACCESSKIT_ROLE_PDF_ACTIONABLE_HIGHLIGHT,388ACCESSKIT_ROLE_PDF_ROOT,389ACCESSKIT_ROLE_GRAPHICS_DOCUMENT,390ACCESSKIT_ROLE_GRAPHICS_OBJECT,391ACCESSKIT_ROLE_GRAPHICS_SYMBOL,392ACCESSKIT_ROLE_DOC_ABSTRACT,393ACCESSKIT_ROLE_DOC_ACKNOWLEDGEMENTS,394ACCESSKIT_ROLE_DOC_AFTERWORD,395ACCESSKIT_ROLE_DOC_APPENDIX,396ACCESSKIT_ROLE_DOC_BACK_LINK,397ACCESSKIT_ROLE_DOC_BIBLIO_ENTRY,398ACCESSKIT_ROLE_DOC_BIBLIOGRAPHY,399ACCESSKIT_ROLE_DOC_BIBLIO_REF,400ACCESSKIT_ROLE_DOC_CHAPTER,401ACCESSKIT_ROLE_DOC_COLOPHON,402ACCESSKIT_ROLE_DOC_CONCLUSION,403ACCESSKIT_ROLE_DOC_COVER,404ACCESSKIT_ROLE_DOC_CREDIT,405ACCESSKIT_ROLE_DOC_CREDITS,406ACCESSKIT_ROLE_DOC_DEDICATION,407ACCESSKIT_ROLE_DOC_ENDNOTE,408ACCESSKIT_ROLE_DOC_ENDNOTES,409ACCESSKIT_ROLE_DOC_EPIGRAPH,410ACCESSKIT_ROLE_DOC_EPILOGUE,411ACCESSKIT_ROLE_DOC_ERRATA,412ACCESSKIT_ROLE_DOC_EXAMPLE,413ACCESSKIT_ROLE_DOC_FOOTNOTE,414ACCESSKIT_ROLE_DOC_FOREWORD,415ACCESSKIT_ROLE_DOC_GLOSSARY,416ACCESSKIT_ROLE_DOC_GLOSS_REF,417ACCESSKIT_ROLE_DOC_INDEX,418ACCESSKIT_ROLE_DOC_INTRODUCTION,419ACCESSKIT_ROLE_DOC_NOTE_REF,420ACCESSKIT_ROLE_DOC_NOTICE,421ACCESSKIT_ROLE_DOC_PAGE_BREAK,422ACCESSKIT_ROLE_DOC_PAGE_FOOTER,423ACCESSKIT_ROLE_DOC_PAGE_HEADER,424ACCESSKIT_ROLE_DOC_PAGE_LIST,425ACCESSKIT_ROLE_DOC_PART,426ACCESSKIT_ROLE_DOC_PREFACE,427ACCESSKIT_ROLE_DOC_PROLOGUE,428ACCESSKIT_ROLE_DOC_PULLQUOTE,429ACCESSKIT_ROLE_DOC_QNA,430ACCESSKIT_ROLE_DOC_SUBTITLE,431ACCESSKIT_ROLE_DOC_TIP,432ACCESSKIT_ROLE_DOC_TOC,433/**434* Behaves similar to an ARIA grid but is primarily used by Chromium's435* `TableView` and its subclasses, so they can be exposed correctly436* on certain platforms.437*/438ACCESSKIT_ROLE_LIST_GRID,439/**440* This is just like a multi-line document, but signals that assistive441* technologies should implement behavior specific to a VT-100-style442* terminal.443*/444ACCESSKIT_ROLE_TERMINAL,445};446#ifndef __cplusplus447typedef uint8_t accesskit_role;448#endif // __cplusplus449450/**451* A suggestion about where the node being scrolled into view should be452* positioned relative to the edges of the scrollable container.453*/454enum accesskit_scroll_hint455#ifdef __cplusplus456: uint8_t457#endif // __cplusplus458{459ACCESSKIT_SCROLL_HINT_TOP_LEFT,460ACCESSKIT_SCROLL_HINT_BOTTOM_RIGHT,461ACCESSKIT_SCROLL_HINT_TOP_EDGE,462ACCESSKIT_SCROLL_HINT_BOTTOM_EDGE,463ACCESSKIT_SCROLL_HINT_LEFT_EDGE,464ACCESSKIT_SCROLL_HINT_RIGHT_EDGE,465};466#ifndef __cplusplus467typedef uint8_t accesskit_scroll_hint;468#endif // __cplusplus469470/**471* The amount by which to scroll in the direction specified by one of the472* `Scroll` actions.473*/474enum accesskit_scroll_unit475#ifdef __cplusplus476: uint8_t477#endif // __cplusplus478{479/**480* A single item of a list, line of text (for vertical scrolling),481* character (for horizontal scrolling), or an approximation of482* one of these.483*/484ACCESSKIT_SCROLL_UNIT_ITEM,485/**486* The amount of content that fits in the viewport.487*/488ACCESSKIT_SCROLL_UNIT_PAGE,489};490#ifndef __cplusplus491typedef uint8_t accesskit_scroll_unit;492#endif // __cplusplus493494enum accesskit_sort_direction495#ifdef __cplusplus496: uint8_t497#endif // __cplusplus498{499ACCESSKIT_SORT_DIRECTION_ASCENDING,500ACCESSKIT_SORT_DIRECTION_DESCENDING,501ACCESSKIT_SORT_DIRECTION_OTHER,502};503#ifndef __cplusplus504typedef uint8_t accesskit_sort_direction;505#endif // __cplusplus506507enum accesskit_text_align508#ifdef __cplusplus509: uint8_t510#endif // __cplusplus511{512ACCESSKIT_TEXT_ALIGN_LEFT,513ACCESSKIT_TEXT_ALIGN_RIGHT,514ACCESSKIT_TEXT_ALIGN_CENTER,515ACCESSKIT_TEXT_ALIGN_JUSTIFY,516};517#ifndef __cplusplus518typedef uint8_t accesskit_text_align;519#endif // __cplusplus520521enum accesskit_text_decoration522#ifdef __cplusplus523: uint8_t524#endif // __cplusplus525{526ACCESSKIT_TEXT_DECORATION_SOLID,527ACCESSKIT_TEXT_DECORATION_DOTTED,528ACCESSKIT_TEXT_DECORATION_DASHED,529ACCESSKIT_TEXT_DECORATION_DOUBLE,530ACCESSKIT_TEXT_DECORATION_WAVY,531};532#ifndef __cplusplus533typedef uint8_t accesskit_text_decoration;534#endif // __cplusplus535536enum accesskit_text_direction537#ifdef __cplusplus538: uint8_t539#endif // __cplusplus540{541ACCESSKIT_TEXT_DIRECTION_LEFT_TO_RIGHT,542ACCESSKIT_TEXT_DIRECTION_RIGHT_TO_LEFT,543ACCESSKIT_TEXT_DIRECTION_TOP_TO_BOTTOM,544ACCESSKIT_TEXT_DIRECTION_BOTTOM_TO_TOP,545};546#ifndef __cplusplus547typedef uint8_t accesskit_text_direction;548#endif // __cplusplus549550enum accesskit_toggled551#ifdef __cplusplus552: uint8_t553#endif // __cplusplus554{555ACCESSKIT_TOGGLED_FALSE,556ACCESSKIT_TOGGLED_TRUE,557ACCESSKIT_TOGGLED_MIXED,558};559#ifndef __cplusplus560typedef uint8_t accesskit_toggled;561#endif // __cplusplus562563enum accesskit_vertical_offset564#ifdef __cplusplus565: uint8_t566#endif // __cplusplus567{568ACCESSKIT_VERTICAL_OFFSET_SUBSCRIPT,569ACCESSKIT_VERTICAL_OFFSET_SUPERSCRIPT,570};571#ifndef __cplusplus572typedef uint8_t accesskit_vertical_offset;573#endif // __cplusplus574575typedef struct accesskit_custom_action accesskit_custom_action;576577#if defined(__APPLE__)578typedef struct accesskit_macos_adapter accesskit_macos_adapter;579#endif580581#if defined(__APPLE__)582typedef struct accesskit_macos_queued_events accesskit_macos_queued_events;583#endif584585#if defined(__APPLE__)586typedef struct accesskit_macos_subclassing_adapter587accesskit_macos_subclassing_adapter;588#endif589590typedef struct accesskit_node accesskit_node;591592typedef struct accesskit_tree accesskit_tree;593594typedef struct accesskit_tree_update accesskit_tree_update;595596#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \597defined(__NetBSD__) || defined(__OpenBSD__))598typedef struct accesskit_unix_adapter accesskit_unix_adapter;599#endif600601#if defined(_WIN32)602typedef struct accesskit_windows_adapter accesskit_windows_adapter;603#endif604605#if defined(_WIN32)606typedef struct accesskit_windows_queued_events accesskit_windows_queued_events;607#endif608609#if defined(_WIN32)610typedef struct accesskit_windows_subclassing_adapter611accesskit_windows_subclassing_adapter;612#endif613614typedef uint64_t accesskit_node_id;615616typedef struct accesskit_node_ids {617size_t length;618const accesskit_node_id *values;619} accesskit_node_ids;620621/**622* Represents an optional value.623*624* If `has_value` is false, do not read the `value` field.625*/626typedef struct accesskit_opt_node_id {627bool has_value;628accesskit_node_id value;629} accesskit_opt_node_id;630631/**632* Represents an optional value.633*634* If `has_value` is false, do not read the `value` field.635*/636typedef struct accesskit_opt_double {637bool has_value;638double value;639} accesskit_opt_double;640641/**642* Represents an optional value.643*644* If `has_value` is false, do not read the `value` field.645*/646typedef struct accesskit_opt_index {647bool has_value;648size_t value;649} accesskit_opt_index;650651/**652* Represents an optional value.653*654* If `has_value` is false, do not read the `value` field.655*/656typedef struct accesskit_opt_color {657bool has_value;658uint32_t value;659} accesskit_opt_color;660661/**662* Represents an optional value.663*664* If `has_value` is false, do not read the `value` field.665*/666typedef struct accesskit_opt_text_decoration {667bool has_value;668accesskit_text_decoration value;669} accesskit_opt_text_decoration;670671typedef struct accesskit_lengths {672size_t length;673const uint8_t *values;674} accesskit_lengths;675676typedef struct accesskit_opt_coords {677bool has_value;678size_t length;679const float *values;680} accesskit_opt_coords;681682/**683* Represents an optional value.684*685* If `has_value` is false, do not read the `value` field.686*/687typedef struct accesskit_opt_bool {688bool has_value;689bool value;690} accesskit_opt_bool;691692/**693* Represents an optional value.694*695* If `has_value` is false, do not read the `value` field.696*/697typedef struct accesskit_opt_invalid {698bool has_value;699accesskit_invalid value;700} accesskit_opt_invalid;701702/**703* Represents an optional value.704*705* If `has_value` is false, do not read the `value` field.706*/707typedef struct accesskit_opt_toggled {708bool has_value;709accesskit_toggled value;710} accesskit_opt_toggled;711712/**713* Represents an optional value.714*715* If `has_value` is false, do not read the `value` field.716*/717typedef struct accesskit_opt_live {718bool has_value;719accesskit_live value;720} accesskit_opt_live;721722/**723* Represents an optional value.724*725* If `has_value` is false, do not read the `value` field.726*/727typedef struct accesskit_opt_text_direction {728bool has_value;729accesskit_text_direction value;730} accesskit_opt_text_direction;731732/**733* Represents an optional value.734*735* If `has_value` is false, do not read the `value` field.736*/737typedef struct accesskit_opt_orientation {738bool has_value;739accesskit_orientation value;740} accesskit_opt_orientation;741742/**743* Represents an optional value.744*745* If `has_value` is false, do not read the `value` field.746*/747typedef struct accesskit_opt_sort_direction {748bool has_value;749accesskit_sort_direction value;750} accesskit_opt_sort_direction;751752/**753* Represents an optional value.754*755* If `has_value` is false, do not read the `value` field.756*/757typedef struct accesskit_opt_aria_current {758bool has_value;759accesskit_aria_current value;760} accesskit_opt_aria_current;761762/**763* Represents an optional value.764*765* If `has_value` is false, do not read the `value` field.766*/767typedef struct accesskit_opt_auto_complete {768bool has_value;769accesskit_auto_complete value;770} accesskit_opt_auto_complete;771772/**773* Represents an optional value.774*775* If `has_value` is false, do not read the `value` field.776*/777typedef struct accesskit_opt_has_popup {778bool has_value;779accesskit_has_popup value;780} accesskit_opt_has_popup;781782/**783* Represents an optional value.784*785* If `has_value` is false, do not read the `value` field.786*/787typedef struct accesskit_opt_list_style {788bool has_value;789accesskit_list_style value;790} accesskit_opt_list_style;791792/**793* Represents an optional value.794*795* If `has_value` is false, do not read the `value` field.796*/797typedef struct accesskit_opt_text_align {798bool has_value;799accesskit_text_align value;800} accesskit_opt_text_align;801802/**803* Represents an optional value.804*805* If `has_value` is false, do not read the `value` field.806*/807typedef struct accesskit_opt_vertical_offset {808bool has_value;809accesskit_vertical_offset value;810} accesskit_opt_vertical_offset;811812/**813* A 2D affine transform. Derived from814* [kurbo](https://github.com/linebender/kurbo).815*/816typedef struct accesskit_affine {817double _0[6];818} accesskit_affine;819820/**821* A rectangle. Derived from [kurbo](https://github.com/linebender/kurbo).822*/823typedef struct accesskit_rect {824/**825* The minimum x coordinate (left edge).826*/827double x0;828/**829* The minimum y coordinate (top edge in y-down spaces).830*/831double y0;832/**833* The maximum x coordinate (right edge).834*/835double x1;836/**837* The maximum y coordinate (bottom edge in y-down spaces).838*/839double y1;840} accesskit_rect;841842/**843* Represents an optional value.844*845* If `has_value` is false, do not read the `value` field.846*/847typedef struct accesskit_opt_rect {848bool has_value;849struct accesskit_rect value;850} accesskit_opt_rect;851852typedef struct accesskit_text_position {853accesskit_node_id node;854size_t character_index;855} accesskit_text_position;856857typedef struct accesskit_text_selection {858struct accesskit_text_position anchor;859struct accesskit_text_position focus;860} accesskit_text_selection;861862/**863* Represents an optional value.864*865* If `has_value` is false, do not read the `value` field.866*/867typedef struct accesskit_opt_text_selection {868bool has_value;869struct accesskit_text_selection value;870} accesskit_opt_text_selection;871872typedef struct accesskit_custom_actions {873size_t length;874struct accesskit_custom_action **values;875} accesskit_custom_actions;876877/**878* A 2D point. Derived from [kurbo](https://github.com/linebender/kurbo).879*/880typedef struct accesskit_point {881/**882* The x coordinate.883*/884double x;885/**886* The y coordinate.887*/888double y;889} accesskit_point;890891typedef enum accesskit_action_data_Tag {892ACCESSKIT_ACTION_DATA_CUSTOM_ACTION,893ACCESSKIT_ACTION_DATA_VALUE,894ACCESSKIT_ACTION_DATA_NUMERIC_VALUE,895ACCESSKIT_ACTION_DATA_SCROLL_UNIT,896/**897* Optional suggestion for `ACCESSKIT_ACTION_SCROLL_INTO_VIEW`, specifying898* the preferred position of the target node relative to the scrollable899* container's viewport.900*/901ACCESSKIT_ACTION_DATA_SCROLL_HINT,902ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT,903ACCESSKIT_ACTION_DATA_SET_SCROLL_OFFSET,904ACCESSKIT_ACTION_DATA_SET_TEXT_SELECTION,905} accesskit_action_data_Tag;906907typedef struct accesskit_action_data {908accesskit_action_data_Tag tag;909union {910struct {911int32_t custom_action;912};913struct {914char *value;915};916struct {917double numeric_value;918};919struct {920accesskit_scroll_unit scroll_unit;921};922struct {923accesskit_scroll_hint scroll_hint;924};925struct {926struct accesskit_point scroll_to_point;927};928struct {929struct accesskit_point set_scroll_offset;930};931struct {932struct accesskit_text_selection set_text_selection;933};934};935} accesskit_action_data;936937/**938* Represents an optional value.939*940* If `has_value` is false, do not read the `value` field.941*/942typedef struct accesskit_opt_action_data {943bool has_value;944struct accesskit_action_data value;945} accesskit_opt_action_data;946947typedef struct accesskit_action_request {948accesskit_action action;949accesskit_node_id target;950struct accesskit_opt_action_data data;951} accesskit_action_request;952953/**954* A 2D vector. Derived from [kurbo](https://github.com/linebender/kurbo).955*956* This is intended primarily for a vector in the mathematical sense,957* but it can be interpreted as a translation, and converted to and958* from a point (vector relative to the origin) and size.959*/960typedef struct accesskit_vec2 {961/**962* The x-coordinate.963*/964double x;965/**966* The y-coordinate.967*/968double y;969} accesskit_vec2;970971/**972* A 2D size. Derived from [kurbo](https://github.com/linebender/kurbo).973*/974typedef struct accesskit_size {975/**976* The width.977*/978double width;979/**980* The height.981*/982double height;983} accesskit_size;984985/**986* Ownership of `request` is transferred to the callback. `request` must987* be freed using `accesskit_action_request_free`.988*/989typedef void (*accesskit_action_handler_callback)(990struct accesskit_action_request *request, void *userdata);991992typedef void *accesskit_tree_update_factory_userdata;993994/**995* This function can't return a null pointer. Ownership of the returned value996* will be transferred to the caller.997*/998typedef struct accesskit_tree_update *(*accesskit_tree_update_factory)(999accesskit_tree_update_factory_userdata);10001001typedef struct accesskit_tree_update *(*accesskit_activation_handler_callback)(1002void *userdata);10031004typedef void (*accesskit_deactivation_handler_callback)(void *userdata);10051006#if defined(_WIN32)1007/**1008* Represents an optional value.1009*1010* If `has_value` is false, do not read the `value` field.1011*/1012typedef struct accesskit_opt_lresult {1013bool has_value;1014LRESULT value;1015} accesskit_opt_lresult;1016#endif10171018#ifdef __cplusplus1019extern "C" {1020#endif // __cplusplus10211022accesskit_role accesskit_node_role(const struct accesskit_node *node);10231024void accesskit_node_set_role(struct accesskit_node *node, accesskit_role value);10251026bool accesskit_node_supports_action(const struct accesskit_node *node,1027accesskit_action action);10281029void accesskit_node_add_action(struct accesskit_node *node,1030accesskit_action action);10311032void accesskit_node_remove_action(struct accesskit_node *node,1033accesskit_action action);10341035void accesskit_node_clear_actions(struct accesskit_node *node);10361037/**1038* Return whether the specified action is in the set supported on this node's1039* direct children in the filtered tree.1040*/1041bool accesskit_node_child_supports_action(const struct accesskit_node *node,1042accesskit_action action);10431044/**1045* Add the specified action to the set supported on this node's direct1046* children in the filtered tree.1047*/1048void accesskit_node_add_child_action(struct accesskit_node *node,1049accesskit_action action);10501051/**1052* Remove the specified action from the set supported on this node's direct1053* children in the filtered tree.1054*/1055void accesskit_node_remove_child_action(struct accesskit_node *node,1056accesskit_action action);10571058/**1059* Clear the set of actions supported on this node's direct children in the1060* filtered tree.1061*/1062void accesskit_node_clear_child_actions(struct accesskit_node *node);10631064bool accesskit_node_is_hidden(const struct accesskit_node *node);10651066void accesskit_node_set_hidden(struct accesskit_node *node);10671068void accesskit_node_clear_hidden(struct accesskit_node *node);10691070bool accesskit_node_is_multiselectable(const struct accesskit_node *node);10711072void accesskit_node_set_multiselectable(struct accesskit_node *node);10731074void accesskit_node_clear_multiselectable(struct accesskit_node *node);10751076bool accesskit_node_is_required(const struct accesskit_node *node);10771078void accesskit_node_set_required(struct accesskit_node *node);10791080void accesskit_node_clear_required(struct accesskit_node *node);10811082bool accesskit_node_is_visited(const struct accesskit_node *node);10831084void accesskit_node_set_visited(struct accesskit_node *node);10851086void accesskit_node_clear_visited(struct accesskit_node *node);10871088bool accesskit_node_is_busy(const struct accesskit_node *node);10891090void accesskit_node_set_busy(struct accesskit_node *node);10911092void accesskit_node_clear_busy(struct accesskit_node *node);10931094bool accesskit_node_is_live_atomic(const struct accesskit_node *node);10951096void accesskit_node_set_live_atomic(struct accesskit_node *node);10971098void accesskit_node_clear_live_atomic(struct accesskit_node *node);10991100bool accesskit_node_is_modal(const struct accesskit_node *node);11011102void accesskit_node_set_modal(struct accesskit_node *node);11031104void accesskit_node_clear_modal(struct accesskit_node *node);11051106bool accesskit_node_is_touch_transparent(const struct accesskit_node *node);11071108void accesskit_node_set_touch_transparent(struct accesskit_node *node);11091110void accesskit_node_clear_touch_transparent(struct accesskit_node *node);11111112bool accesskit_node_is_read_only(const struct accesskit_node *node);11131114void accesskit_node_set_read_only(struct accesskit_node *node);11151116void accesskit_node_clear_read_only(struct accesskit_node *node);11171118bool accesskit_node_is_disabled(const struct accesskit_node *node);11191120void accesskit_node_set_disabled(struct accesskit_node *node);11211122void accesskit_node_clear_disabled(struct accesskit_node *node);11231124bool accesskit_node_is_bold(const struct accesskit_node *node);11251126void accesskit_node_set_bold(struct accesskit_node *node);11271128void accesskit_node_clear_bold(struct accesskit_node *node);11291130bool accesskit_node_is_italic(const struct accesskit_node *node);11311132void accesskit_node_set_italic(struct accesskit_node *node);11331134void accesskit_node_clear_italic(struct accesskit_node *node);11351136bool accesskit_node_clips_children(const struct accesskit_node *node);11371138void accesskit_node_set_clips_children(struct accesskit_node *node);11391140void accesskit_node_clear_clips_children(struct accesskit_node *node);11411142bool accesskit_node_is_line_breaking_object(const struct accesskit_node *node);11431144void accesskit_node_set_is_line_breaking_object(struct accesskit_node *node);11451146void accesskit_node_clear_is_line_breaking_object(struct accesskit_node *node);11471148bool accesskit_node_is_page_breaking_object(const struct accesskit_node *node);11491150void accesskit_node_set_is_page_breaking_object(struct accesskit_node *node);11511152void accesskit_node_clear_is_page_breaking_object(struct accesskit_node *node);11531154bool accesskit_node_is_spelling_error(const struct accesskit_node *node);11551156void accesskit_node_set_is_spelling_error(struct accesskit_node *node);11571158void accesskit_node_clear_is_spelling_error(struct accesskit_node *node);11591160bool accesskit_node_is_grammar_error(const struct accesskit_node *node);11611162void accesskit_node_set_is_grammar_error(struct accesskit_node *node);11631164void accesskit_node_clear_is_grammar_error(struct accesskit_node *node);11651166bool accesskit_node_is_search_match(const struct accesskit_node *node);11671168void accesskit_node_set_is_search_match(struct accesskit_node *node);11691170void accesskit_node_clear_is_search_match(struct accesskit_node *node);11711172bool accesskit_node_is_suggestion(const struct accesskit_node *node);11731174void accesskit_node_set_is_suggestion(struct accesskit_node *node);11751176void accesskit_node_clear_is_suggestion(struct accesskit_node *node);11771178struct accesskit_node_ids accesskit_node_children(1179const struct accesskit_node *node);11801181/**1182* Caller is responsible for freeing `values`.1183*/1184void accesskit_node_set_children(struct accesskit_node *node, size_t length,1185const accesskit_node_id *values);11861187void accesskit_node_push_child(struct accesskit_node *node,1188accesskit_node_id item);11891190void accesskit_node_clear_children(struct accesskit_node *node);11911192struct accesskit_node_ids accesskit_node_controls(1193const struct accesskit_node *node);11941195/**1196* Caller is responsible for freeing `values`.1197*/1198void accesskit_node_set_controls(struct accesskit_node *node, size_t length,1199const accesskit_node_id *values);12001201void accesskit_node_push_controlled(struct accesskit_node *node,1202accesskit_node_id item);12031204void accesskit_node_clear_controls(struct accesskit_node *node);12051206struct accesskit_node_ids accesskit_node_details(1207const struct accesskit_node *node);12081209/**1210* Caller is responsible for freeing `values`.1211*/1212void accesskit_node_set_details(struct accesskit_node *node, size_t length,1213const accesskit_node_id *values);12141215void accesskit_node_push_detail(struct accesskit_node *node,1216accesskit_node_id item);12171218void accesskit_node_clear_details(struct accesskit_node *node);12191220struct accesskit_node_ids accesskit_node_described_by(1221const struct accesskit_node *node);12221223/**1224* Caller is responsible for freeing `values`.1225*/1226void accesskit_node_set_described_by(struct accesskit_node *node, size_t length,1227const accesskit_node_id *values);12281229void accesskit_node_push_described_by(struct accesskit_node *node,1230accesskit_node_id item);12311232void accesskit_node_clear_described_by(struct accesskit_node *node);12331234struct accesskit_node_ids accesskit_node_flow_to(1235const struct accesskit_node *node);12361237/**1238* Caller is responsible for freeing `values`.1239*/1240void accesskit_node_set_flow_to(struct accesskit_node *node, size_t length,1241const accesskit_node_id *values);12421243void accesskit_node_push_flow_to(struct accesskit_node *node,1244accesskit_node_id item);12451246void accesskit_node_clear_flow_to(struct accesskit_node *node);12471248struct accesskit_node_ids accesskit_node_labelled_by(1249const struct accesskit_node *node);12501251/**1252* Caller is responsible for freeing `values`.1253*/1254void accesskit_node_set_labelled_by(struct accesskit_node *node, size_t length,1255const accesskit_node_id *values);12561257void accesskit_node_push_labelled_by(struct accesskit_node *node,1258accesskit_node_id item);12591260void accesskit_node_clear_labelled_by(struct accesskit_node *node);12611262struct accesskit_node_ids accesskit_node_owns(1263const struct accesskit_node *node);12641265/**1266* Caller is responsible for freeing `values`.1267*/1268void accesskit_node_set_owns(struct accesskit_node *node, size_t length,1269const accesskit_node_id *values);12701271void accesskit_node_push_owned(struct accesskit_node *node,1272accesskit_node_id item);12731274void accesskit_node_clear_owns(struct accesskit_node *node);12751276struct accesskit_node_ids accesskit_node_radio_group(1277const struct accesskit_node *node);12781279/**1280* Caller is responsible for freeing `values`.1281*/1282void accesskit_node_set_radio_group(struct accesskit_node *node, size_t length,1283const accesskit_node_id *values);12841285void accesskit_node_push_to_radio_group(struct accesskit_node *node,1286accesskit_node_id item);12871288void accesskit_node_clear_radio_group(struct accesskit_node *node);12891290struct accesskit_opt_node_id accesskit_node_active_descendant(1291const struct accesskit_node *node);12921293void accesskit_node_set_active_descendant(struct accesskit_node *node,1294accesskit_node_id value);12951296void accesskit_node_clear_active_descendant(struct accesskit_node *node);12971298struct accesskit_opt_node_id accesskit_node_error_message(1299const struct accesskit_node *node);13001301void accesskit_node_set_error_message(struct accesskit_node *node,1302accesskit_node_id value);13031304void accesskit_node_clear_error_message(struct accesskit_node *node);13051306struct accesskit_opt_node_id accesskit_node_in_page_link_target(1307const struct accesskit_node *node);13081309void accesskit_node_set_in_page_link_target(struct accesskit_node *node,1310accesskit_node_id value);13111312void accesskit_node_clear_in_page_link_target(struct accesskit_node *node);13131314struct accesskit_opt_node_id accesskit_node_member_of(1315const struct accesskit_node *node);13161317void accesskit_node_set_member_of(struct accesskit_node *node,1318accesskit_node_id value);13191320void accesskit_node_clear_member_of(struct accesskit_node *node);13211322struct accesskit_opt_node_id accesskit_node_next_on_line(1323const struct accesskit_node *node);13241325void accesskit_node_set_next_on_line(struct accesskit_node *node,1326accesskit_node_id value);13271328void accesskit_node_clear_next_on_line(struct accesskit_node *node);13291330struct accesskit_opt_node_id accesskit_node_previous_on_line(1331const struct accesskit_node *node);13321333void accesskit_node_set_previous_on_line(struct accesskit_node *node,1334accesskit_node_id value);13351336void accesskit_node_clear_previous_on_line(struct accesskit_node *node);13371338struct accesskit_opt_node_id accesskit_node_popup_for(1339const struct accesskit_node *node);13401341void accesskit_node_set_popup_for(struct accesskit_node *node,1342accesskit_node_id value);13431344void accesskit_node_clear_popup_for(struct accesskit_node *node);13451346/**1347* Only call this function with a string that originated from AccessKit.1348*/1349void accesskit_string_free(char *string);13501351/**1352* Caller must call `accesskit_string_free` with the return value.1353*/1354char *accesskit_node_label(const struct accesskit_node *node);13551356/**1357* Caller is responsible for freeing the memory pointed by `value`.1358*/1359void accesskit_node_set_label(struct accesskit_node *node, const char *value);13601361/**1362* Caller is responsible for freeing the memory pointed by `value`.1363*/1364void accesskit_node_set_label_with_length(struct accesskit_node *node,1365const char *value, size_t length);13661367void accesskit_node_clear_label(struct accesskit_node *node);13681369/**1370* Caller must call `accesskit_string_free` with the return value.1371*/1372char *accesskit_node_description(const struct accesskit_node *node);13731374/**1375* Caller is responsible for freeing the memory pointed by `value`.1376*/1377void accesskit_node_set_description(struct accesskit_node *node,1378const char *value);13791380/**1381* Caller is responsible for freeing the memory pointed by `value`.1382*/1383void accesskit_node_set_description_with_length(struct accesskit_node *node,1384const char *value,1385size_t length);13861387void accesskit_node_clear_description(struct accesskit_node *node);13881389/**1390* Caller must call `accesskit_string_free` with the return value.1391*/1392char *accesskit_node_value(const struct accesskit_node *node);13931394/**1395* Caller is responsible for freeing the memory pointed by `value`.1396*/1397void accesskit_node_set_value(struct accesskit_node *node, const char *value);13981399/**1400* Caller is responsible for freeing the memory pointed by `value`.1401*/1402void accesskit_node_set_value_with_length(struct accesskit_node *node,1403const char *value, size_t length);14041405void accesskit_node_clear_value(struct accesskit_node *node);14061407/**1408* Caller must call `accesskit_string_free` with the return value.1409*/1410char *accesskit_node_access_key(const struct accesskit_node *node);14111412/**1413* Caller is responsible for freeing the memory pointed by `value`.1414*/1415void accesskit_node_set_access_key(struct accesskit_node *node,1416const char *value);14171418/**1419* Caller is responsible for freeing the memory pointed by `value`.1420*/1421void accesskit_node_set_access_key_with_length(struct accesskit_node *node,1422const char *value,1423size_t length);14241425void accesskit_node_clear_access_key(struct accesskit_node *node);14261427/**1428* Caller must call `accesskit_string_free` with the return value.1429*/1430char *accesskit_node_author_id(const struct accesskit_node *node);14311432/**1433* Caller is responsible for freeing the memory pointed by `value`.1434*/1435void accesskit_node_set_author_id(struct accesskit_node *node,1436const char *value);14371438/**1439* Caller is responsible for freeing the memory pointed by `value`.1440*/1441void accesskit_node_set_author_id_with_length(struct accesskit_node *node,1442const char *value, size_t length);14431444void accesskit_node_clear_author_id(struct accesskit_node *node);14451446/**1447* Caller must call `accesskit_string_free` with the return value.1448*/1449char *accesskit_node_class_name(const struct accesskit_node *node);14501451/**1452* Caller is responsible for freeing the memory pointed by `value`.1453*/1454void accesskit_node_set_class_name(struct accesskit_node *node,1455const char *value);14561457/**1458* Caller is responsible for freeing the memory pointed by `value`.1459*/1460void accesskit_node_set_class_name_with_length(struct accesskit_node *node,1461const char *value,1462size_t length);14631464void accesskit_node_clear_class_name(struct accesskit_node *node);14651466/**1467* Caller must call `accesskit_string_free` with the return value.1468*/1469char *accesskit_node_font_family(const struct accesskit_node *node);14701471/**1472* Caller is responsible for freeing the memory pointed by `value`.1473*/1474void accesskit_node_set_font_family(struct accesskit_node *node,1475const char *value);14761477/**1478* Caller is responsible for freeing the memory pointed by `value`.1479*/1480void accesskit_node_set_font_family_with_length(struct accesskit_node *node,1481const char *value,1482size_t length);14831484void accesskit_node_clear_font_family(struct accesskit_node *node);14851486/**1487* Caller must call `accesskit_string_free` with the return value.1488*/1489char *accesskit_node_html_tag(const struct accesskit_node *node);14901491/**1492* Caller is responsible for freeing the memory pointed by `value`.1493*/1494void accesskit_node_set_html_tag(struct accesskit_node *node,1495const char *value);14961497/**1498* Caller is responsible for freeing the memory pointed by `value`.1499*/1500void accesskit_node_set_html_tag_with_length(struct accesskit_node *node,1501const char *value, size_t length);15021503void accesskit_node_clear_html_tag(struct accesskit_node *node);15041505/**1506* Caller must call `accesskit_string_free` with the return value.1507*/1508char *accesskit_node_inner_html(const struct accesskit_node *node);15091510/**1511* Caller is responsible for freeing the memory pointed by `value`.1512*/1513void accesskit_node_set_inner_html(struct accesskit_node *node,1514const char *value);15151516/**1517* Caller is responsible for freeing the memory pointed by `value`.1518*/1519void accesskit_node_set_inner_html_with_length(struct accesskit_node *node,1520const char *value,1521size_t length);15221523void accesskit_node_clear_inner_html(struct accesskit_node *node);15241525/**1526* Caller must call `accesskit_string_free` with the return value.1527*/1528char *accesskit_node_keyboard_shortcut(const struct accesskit_node *node);15291530/**1531* Caller is responsible for freeing the memory pointed by `value`.1532*/1533void accesskit_node_set_keyboard_shortcut(struct accesskit_node *node,1534const char *value);15351536/**1537* Caller is responsible for freeing the memory pointed by `value`.1538*/1539void accesskit_node_set_keyboard_shortcut_with_length(1540struct accesskit_node *node, const char *value, size_t length);15411542void accesskit_node_clear_keyboard_shortcut(struct accesskit_node *node);15431544/**1545* Caller must call `accesskit_string_free` with the return value.1546*/1547char *accesskit_node_language(const struct accesskit_node *node);15481549/**1550* Caller is responsible for freeing the memory pointed by `value`.1551*/1552void accesskit_node_set_language(struct accesskit_node *node,1553const char *value);15541555/**1556* Caller is responsible for freeing the memory pointed by `value`.1557*/1558void accesskit_node_set_language_with_length(struct accesskit_node *node,1559const char *value, size_t length);15601561void accesskit_node_clear_language(struct accesskit_node *node);15621563/**1564* Caller must call `accesskit_string_free` with the return value.1565*/1566char *accesskit_node_placeholder(const struct accesskit_node *node);15671568/**1569* Caller is responsible for freeing the memory pointed by `value`.1570*/1571void accesskit_node_set_placeholder(struct accesskit_node *node,1572const char *value);15731574/**1575* Caller is responsible for freeing the memory pointed by `value`.1576*/1577void accesskit_node_set_placeholder_with_length(struct accesskit_node *node,1578const char *value,1579size_t length);15801581void accesskit_node_clear_placeholder(struct accesskit_node *node);15821583/**1584* Caller must call `accesskit_string_free` with the return value.1585*/1586char *accesskit_node_role_description(const struct accesskit_node *node);15871588/**1589* Caller is responsible for freeing the memory pointed by `value`.1590*/1591void accesskit_node_set_role_description(struct accesskit_node *node,1592const char *value);15931594/**1595* Caller is responsible for freeing the memory pointed by `value`.1596*/1597void accesskit_node_set_role_description_with_length(1598struct accesskit_node *node, const char *value, size_t length);15991600void accesskit_node_clear_role_description(struct accesskit_node *node);16011602/**1603* Caller must call `accesskit_string_free` with the return value.1604*/1605char *accesskit_node_state_description(const struct accesskit_node *node);16061607/**1608* Caller is responsible for freeing the memory pointed by `value`.1609*/1610void accesskit_node_set_state_description(struct accesskit_node *node,1611const char *value);16121613/**1614* Caller is responsible for freeing the memory pointed by `value`.1615*/1616void accesskit_node_set_state_description_with_length(1617struct accesskit_node *node, const char *value, size_t length);16181619void accesskit_node_clear_state_description(struct accesskit_node *node);16201621/**1622* Caller must call `accesskit_string_free` with the return value.1623*/1624char *accesskit_node_tooltip(const struct accesskit_node *node);16251626/**1627* Caller is responsible for freeing the memory pointed by `value`.1628*/1629void accesskit_node_set_tooltip(struct accesskit_node *node, const char *value);16301631/**1632* Caller is responsible for freeing the memory pointed by `value`.1633*/1634void accesskit_node_set_tooltip_with_length(struct accesskit_node *node,1635const char *value, size_t length);16361637void accesskit_node_clear_tooltip(struct accesskit_node *node);16381639/**1640* Caller must call `accesskit_string_free` with the return value.1641*/1642char *accesskit_node_url(const struct accesskit_node *node);16431644/**1645* Caller is responsible for freeing the memory pointed by `value`.1646*/1647void accesskit_node_set_url(struct accesskit_node *node, const char *value);16481649/**1650* Caller is responsible for freeing the memory pointed by `value`.1651*/1652void accesskit_node_set_url_with_length(struct accesskit_node *node,1653const char *value, size_t length);16541655void accesskit_node_clear_url(struct accesskit_node *node);16561657/**1658* Caller must call `accesskit_string_free` with the return value.1659*/1660char *accesskit_node_row_index_text(const struct accesskit_node *node);16611662/**1663* Caller is responsible for freeing the memory pointed by `value`.1664*/1665void accesskit_node_set_row_index_text(struct accesskit_node *node,1666const char *value);16671668/**1669* Caller is responsible for freeing the memory pointed by `value`.1670*/1671void accesskit_node_set_row_index_text_with_length(struct accesskit_node *node,1672const char *value,1673size_t length);16741675void accesskit_node_clear_row_index_text(struct accesskit_node *node);16761677/**1678* Caller must call `accesskit_string_free` with the return value.1679*/1680char *accesskit_node_column_index_text(const struct accesskit_node *node);16811682/**1683* Caller is responsible for freeing the memory pointed by `value`.1684*/1685void accesskit_node_set_column_index_text(struct accesskit_node *node,1686const char *value);16871688/**1689* Caller is responsible for freeing the memory pointed by `value`.1690*/1691void accesskit_node_set_column_index_text_with_length(1692struct accesskit_node *node, const char *value, size_t length);16931694void accesskit_node_clear_column_index_text(struct accesskit_node *node);16951696struct accesskit_opt_double accesskit_node_scroll_x(1697const struct accesskit_node *node);16981699void accesskit_node_set_scroll_x(struct accesskit_node *node, double value);17001701void accesskit_node_clear_scroll_x(struct accesskit_node *node);17021703struct accesskit_opt_double accesskit_node_scroll_x_min(1704const struct accesskit_node *node);17051706void accesskit_node_set_scroll_x_min(struct accesskit_node *node, double value);17071708void accesskit_node_clear_scroll_x_min(struct accesskit_node *node);17091710struct accesskit_opt_double accesskit_node_scroll_x_max(1711const struct accesskit_node *node);17121713void accesskit_node_set_scroll_x_max(struct accesskit_node *node, double value);17141715void accesskit_node_clear_scroll_x_max(struct accesskit_node *node);17161717struct accesskit_opt_double accesskit_node_scroll_y(1718const struct accesskit_node *node);17191720void accesskit_node_set_scroll_y(struct accesskit_node *node, double value);17211722void accesskit_node_clear_scroll_y(struct accesskit_node *node);17231724struct accesskit_opt_double accesskit_node_scroll_y_min(1725const struct accesskit_node *node);17261727void accesskit_node_set_scroll_y_min(struct accesskit_node *node, double value);17281729void accesskit_node_clear_scroll_y_min(struct accesskit_node *node);17301731struct accesskit_opt_double accesskit_node_scroll_y_max(1732const struct accesskit_node *node);17331734void accesskit_node_set_scroll_y_max(struct accesskit_node *node, double value);17351736void accesskit_node_clear_scroll_y_max(struct accesskit_node *node);17371738struct accesskit_opt_double accesskit_node_numeric_value(1739const struct accesskit_node *node);17401741void accesskit_node_set_numeric_value(struct accesskit_node *node,1742double value);17431744void accesskit_node_clear_numeric_value(struct accesskit_node *node);17451746struct accesskit_opt_double accesskit_node_min_numeric_value(1747const struct accesskit_node *node);17481749void accesskit_node_set_min_numeric_value(struct accesskit_node *node,1750double value);17511752void accesskit_node_clear_min_numeric_value(struct accesskit_node *node);17531754struct accesskit_opt_double accesskit_node_max_numeric_value(1755const struct accesskit_node *node);17561757void accesskit_node_set_max_numeric_value(struct accesskit_node *node,1758double value);17591760void accesskit_node_clear_max_numeric_value(struct accesskit_node *node);17611762struct accesskit_opt_double accesskit_node_numeric_value_step(1763const struct accesskit_node *node);17641765void accesskit_node_set_numeric_value_step(struct accesskit_node *node,1766double value);17671768void accesskit_node_clear_numeric_value_step(struct accesskit_node *node);17691770struct accesskit_opt_double accesskit_node_numeric_value_jump(1771const struct accesskit_node *node);17721773void accesskit_node_set_numeric_value_jump(struct accesskit_node *node,1774double value);17751776void accesskit_node_clear_numeric_value_jump(struct accesskit_node *node);17771778struct accesskit_opt_double accesskit_node_font_size(1779const struct accesskit_node *node);17801781void accesskit_node_set_font_size(struct accesskit_node *node, double value);17821783void accesskit_node_clear_font_size(struct accesskit_node *node);17841785struct accesskit_opt_double accesskit_node_font_weight(1786const struct accesskit_node *node);17871788void accesskit_node_set_font_weight(struct accesskit_node *node, double value);17891790void accesskit_node_clear_font_weight(struct accesskit_node *node);17911792struct accesskit_opt_index accesskit_node_row_count(1793const struct accesskit_node *node);17941795void accesskit_node_set_row_count(struct accesskit_node *node, size_t value);17961797void accesskit_node_clear_row_count(struct accesskit_node *node);17981799struct accesskit_opt_index accesskit_node_column_count(1800const struct accesskit_node *node);18011802void accesskit_node_set_column_count(struct accesskit_node *node, size_t value);18031804void accesskit_node_clear_column_count(struct accesskit_node *node);18051806struct accesskit_opt_index accesskit_node_row_index(1807const struct accesskit_node *node);18081809void accesskit_node_set_row_index(struct accesskit_node *node, size_t value);18101811void accesskit_node_clear_row_index(struct accesskit_node *node);18121813struct accesskit_opt_index accesskit_node_column_index(1814const struct accesskit_node *node);18151816void accesskit_node_set_column_index(struct accesskit_node *node, size_t value);18171818void accesskit_node_clear_column_index(struct accesskit_node *node);18191820struct accesskit_opt_index accesskit_node_row_span(1821const struct accesskit_node *node);18221823void accesskit_node_set_row_span(struct accesskit_node *node, size_t value);18241825void accesskit_node_clear_row_span(struct accesskit_node *node);18261827struct accesskit_opt_index accesskit_node_column_span(1828const struct accesskit_node *node);18291830void accesskit_node_set_column_span(struct accesskit_node *node, size_t value);18311832void accesskit_node_clear_column_span(struct accesskit_node *node);18331834struct accesskit_opt_index accesskit_node_level(1835const struct accesskit_node *node);18361837void accesskit_node_set_level(struct accesskit_node *node, size_t value);18381839void accesskit_node_clear_level(struct accesskit_node *node);18401841struct accesskit_opt_index accesskit_node_size_of_set(1842const struct accesskit_node *node);18431844void accesskit_node_set_size_of_set(struct accesskit_node *node, size_t value);18451846void accesskit_node_clear_size_of_set(struct accesskit_node *node);18471848struct accesskit_opt_index accesskit_node_position_in_set(1849const struct accesskit_node *node);18501851void accesskit_node_set_position_in_set(struct accesskit_node *node,1852size_t value);18531854void accesskit_node_clear_position_in_set(struct accesskit_node *node);18551856struct accesskit_opt_color accesskit_node_color_value(1857const struct accesskit_node *node);18581859void accesskit_node_set_color_value(struct accesskit_node *node,1860uint32_t value);18611862void accesskit_node_clear_color_value(struct accesskit_node *node);18631864struct accesskit_opt_color accesskit_node_background_color(1865const struct accesskit_node *node);18661867void accesskit_node_set_background_color(struct accesskit_node *node,1868uint32_t value);18691870void accesskit_node_clear_background_color(struct accesskit_node *node);18711872struct accesskit_opt_color accesskit_node_foreground_color(1873const struct accesskit_node *node);18741875void accesskit_node_set_foreground_color(struct accesskit_node *node,1876uint32_t value);18771878void accesskit_node_clear_foreground_color(struct accesskit_node *node);18791880struct accesskit_opt_text_decoration accesskit_node_overline(1881const struct accesskit_node *node);18821883void accesskit_node_set_overline(struct accesskit_node *node,1884accesskit_text_decoration value);18851886void accesskit_node_clear_overline(struct accesskit_node *node);18871888struct accesskit_opt_text_decoration accesskit_node_strikethrough(1889const struct accesskit_node *node);18901891void accesskit_node_set_strikethrough(struct accesskit_node *node,1892accesskit_text_decoration value);18931894void accesskit_node_clear_strikethrough(struct accesskit_node *node);18951896struct accesskit_opt_text_decoration accesskit_node_underline(1897const struct accesskit_node *node);18981899void accesskit_node_set_underline(struct accesskit_node *node,1900accesskit_text_decoration value);19011902void accesskit_node_clear_underline(struct accesskit_node *node);19031904struct accesskit_lengths accesskit_node_character_lengths(1905const struct accesskit_node *node);19061907/**1908* Caller is responsible for freeing `values`.1909*/1910void accesskit_node_set_character_lengths(struct accesskit_node *node,1911size_t length, const uint8_t *values);19121913void accesskit_node_clear_character_lengths(struct accesskit_node *node);19141915struct accesskit_lengths accesskit_node_word_lengths(1916const struct accesskit_node *node);19171918/**1919* Caller is responsible for freeing `values`.1920*/1921void accesskit_node_set_word_lengths(struct accesskit_node *node, size_t length,1922const uint8_t *values);19231924void accesskit_node_clear_word_lengths(struct accesskit_node *node);19251926struct accesskit_opt_coords accesskit_node_character_positions(1927const struct accesskit_node *node);19281929/**1930* Caller is responsible for freeing `values`.1931*/1932void accesskit_node_set_character_positions(struct accesskit_node *node,1933size_t length, const float *values);19341935void accesskit_node_clear_character_positions(struct accesskit_node *node);19361937struct accesskit_opt_coords accesskit_node_character_widths(1938const struct accesskit_node *node);19391940/**1941* Caller is responsible for freeing `values`.1942*/1943void accesskit_node_set_character_widths(struct accesskit_node *node,1944size_t length, const float *values);19451946void accesskit_node_clear_character_widths(struct accesskit_node *node);19471948struct accesskit_opt_bool accesskit_node_is_expanded(1949const struct accesskit_node *node);19501951void accesskit_node_set_expanded(struct accesskit_node *node, bool value);19521953void accesskit_node_clear_expanded(struct accesskit_node *node);19541955struct accesskit_opt_bool accesskit_node_is_selected(1956const struct accesskit_node *node);19571958void accesskit_node_set_selected(struct accesskit_node *node, bool value);19591960void accesskit_node_clear_selected(struct accesskit_node *node);19611962struct accesskit_opt_invalid accesskit_node_invalid(1963const struct accesskit_node *node);19641965void accesskit_node_set_invalid(struct accesskit_node *node,1966accesskit_invalid value);19671968void accesskit_node_clear_invalid(struct accesskit_node *node);19691970struct accesskit_opt_toggled accesskit_node_toggled(1971const struct accesskit_node *node);19721973void accesskit_node_set_toggled(struct accesskit_node *node,1974accesskit_toggled value);19751976void accesskit_node_clear_toggled(struct accesskit_node *node);19771978struct accesskit_opt_live accesskit_node_live(1979const struct accesskit_node *node);19801981void accesskit_node_set_live(struct accesskit_node *node, accesskit_live value);19821983void accesskit_node_clear_live(struct accesskit_node *node);19841985struct accesskit_opt_text_direction accesskit_node_text_direction(1986const struct accesskit_node *node);19871988void accesskit_node_set_text_direction(struct accesskit_node *node,1989accesskit_text_direction value);19901991void accesskit_node_clear_text_direction(struct accesskit_node *node);19921993struct accesskit_opt_orientation accesskit_node_orientation(1994const struct accesskit_node *node);19951996void accesskit_node_set_orientation(struct accesskit_node *node,1997accesskit_orientation value);19981999void accesskit_node_clear_orientation(struct accesskit_node *node);20002001struct accesskit_opt_sort_direction accesskit_node_sort_direction(2002const struct accesskit_node *node);20032004void accesskit_node_set_sort_direction(struct accesskit_node *node,2005accesskit_sort_direction value);20062007void accesskit_node_clear_sort_direction(struct accesskit_node *node);20082009struct accesskit_opt_aria_current accesskit_node_aria_current(2010const struct accesskit_node *node);20112012void accesskit_node_set_aria_current(struct accesskit_node *node,2013accesskit_aria_current value);20142015void accesskit_node_clear_aria_current(struct accesskit_node *node);20162017struct accesskit_opt_auto_complete accesskit_node_auto_complete(2018const struct accesskit_node *node);20192020void accesskit_node_set_auto_complete(struct accesskit_node *node,2021accesskit_auto_complete value);20222023void accesskit_node_clear_auto_complete(struct accesskit_node *node);20242025struct accesskit_opt_has_popup accesskit_node_has_popup(2026const struct accesskit_node *node);20272028void accesskit_node_set_has_popup(struct accesskit_node *node,2029accesskit_has_popup value);20302031void accesskit_node_clear_has_popup(struct accesskit_node *node);20322033struct accesskit_opt_list_style accesskit_node_list_style(2034const struct accesskit_node *node);20352036void accesskit_node_set_list_style(struct accesskit_node *node,2037accesskit_list_style value);20382039void accesskit_node_clear_list_style(struct accesskit_node *node);20402041struct accesskit_opt_text_align accesskit_node_text_align(2042const struct accesskit_node *node);20432044void accesskit_node_set_text_align(struct accesskit_node *node,2045accesskit_text_align value);20462047void accesskit_node_clear_text_align(struct accesskit_node *node);20482049struct accesskit_opt_vertical_offset accesskit_node_vertical_offset(2050const struct accesskit_node *node);20512052void accesskit_node_set_vertical_offset(struct accesskit_node *node,2053accesskit_vertical_offset value);20542055void accesskit_node_clear_vertical_offset(struct accesskit_node *node);20562057const struct accesskit_affine *accesskit_node_transform(2058const struct accesskit_node *node);20592060void accesskit_node_set_transform(struct accesskit_node *node,2061struct accesskit_affine value);20622063void accesskit_node_clear_transform(struct accesskit_node *node);20642065struct accesskit_opt_rect accesskit_node_bounds(2066const struct accesskit_node *node);20672068void accesskit_node_set_bounds(struct accesskit_node *node,2069struct accesskit_rect value);20702071void accesskit_node_clear_bounds(struct accesskit_node *node);20722073struct accesskit_opt_text_selection accesskit_node_text_selection(2074const struct accesskit_node *node);20752076void accesskit_node_set_text_selection(struct accesskit_node *node,2077struct accesskit_text_selection value);20782079void accesskit_node_clear_text_selection(struct accesskit_node *node);20802081struct accesskit_custom_action *accesskit_custom_action_new(int32_t id);20822083void accesskit_custom_action_free(struct accesskit_custom_action *action);20842085int32_t accesskit_custom_action_id(2086const struct accesskit_custom_action *action);20872088void accesskit_custom_action_set_id(struct accesskit_custom_action *action,2089int32_t id);20902091/**2092* Caller must call `accesskit_string_free` with the return value.2093*/2094char *accesskit_custom_action_description(2095const struct accesskit_custom_action *action);20962097/**2098* Caller is responsible for freeing the memory pointed by `description`.2099*/2100void accesskit_custom_action_set_description(2101struct accesskit_custom_action *action, const char *description);21022103/**2104* Caller is responsible for freeing the memory pointed by `description`.2105*/2106void accesskit_custom_action_set_description_with_length(2107struct accesskit_custom_action *action, const char *description,2108size_t length);21092110void accesskit_custom_actions_free(struct accesskit_custom_actions *value);21112112/**2113* Caller must call `accesskit_custom_actions_free` with the return value.2114*/2115struct accesskit_custom_actions *accesskit_node_custom_actions(2116const struct accesskit_node *node);21172118/**2119* Caller is responsible for freeing each `custom_action` in the array.2120*/2121void accesskit_node_set_custom_actions(2122struct accesskit_node *node, size_t length,2123struct accesskit_custom_action *const *values);21242125/**2126* Takes ownership of `action`.2127*/2128void accesskit_node_push_custom_action(struct accesskit_node *node,2129struct accesskit_custom_action *action);21302131void accesskit_node_clear_custom_actions(struct accesskit_node *node);21322133struct accesskit_node *accesskit_node_new(accesskit_role role);21342135void accesskit_node_free(struct accesskit_node *node);21362137/**2138* Caller must call `accesskit_string_free` with the return value.2139*/2140char *accesskit_node_debug(const struct accesskit_node *node);21412142struct accesskit_tree *accesskit_tree_new(accesskit_node_id root);21432144void accesskit_tree_free(struct accesskit_tree *tree);21452146/**2147* Caller must call `accesskit_string_free` with the return value.2148*/2149char *accesskit_tree_get_toolkit_name(const struct accesskit_tree *tree);21502151/**2152* Caller is responsible for freeing the memory pointed by `toolkit_name`2153*/2154void accesskit_tree_set_toolkit_name(struct accesskit_tree *tree,2155const char *toolkit_name);21562157/**2158* Caller is responsible for freeing the memory pointed by `toolkit_name`2159*/2160void accesskit_tree_set_toolkit_name_with_length(struct accesskit_tree *tree,2161const char *toolkit_name,2162size_t length);21632164void accesskit_tree_clear_toolkit_name(struct accesskit_tree *tree);21652166/**2167* Caller must call `accesskit_string_free` with the return value.2168*/2169char *accesskit_tree_get_toolkit_version(const struct accesskit_tree *tree);21702171/**2172* Caller is responsible for freeing the memory pointed by `toolkit_version`2173*/2174void accesskit_tree_set_toolkit_version(struct accesskit_tree *tree,2175const char *toolkit_version);21762177/**2178* Caller is responsible for freeing the memory pointed by `toolkit_version`2179*/2180void accesskit_tree_set_toolkit_version_with_length(struct accesskit_tree *tree,2181const char *toolkit_version,2182size_t length);21832184void accesskit_tree_clear_toolkit_version(struct accesskit_tree *tree);21852186/**2187* Caller must call `accesskit_string_free` with the return value.2188*/2189char *accesskit_tree_debug(const struct accesskit_tree *tree);21902191struct accesskit_tree_update *accesskit_tree_update_with_focus(2192accesskit_node_id focus);21932194struct accesskit_tree_update *accesskit_tree_update_with_capacity_and_focus(2195size_t capacity, accesskit_node_id focus);21962197void accesskit_tree_update_free(struct accesskit_tree_update *update);21982199/**2200* Appends the provided node to the tree update's list of nodes.2201* Takes ownership of `node`.2202*/2203void accesskit_tree_update_push_node(struct accesskit_tree_update *update,2204accesskit_node_id id,2205struct accesskit_node *node);22062207void accesskit_tree_update_set_tree(struct accesskit_tree_update *update,2208struct accesskit_tree *tree);22092210void accesskit_tree_update_clear_tree(struct accesskit_tree_update *update);22112212void accesskit_tree_update_set_focus(struct accesskit_tree_update *update,2213accesskit_node_id focus);22142215/**2216* Caller must call `accesskit_string_free` with the return value.2217*/2218char *accesskit_tree_update_debug(2219const struct accesskit_tree_update *tree_update);22202221void accesskit_action_request_free(struct accesskit_action_request *request);22222223struct accesskit_affine accesskit_affine_identity(void);22242225struct accesskit_affine accesskit_affine_flip_y(void);22262227struct accesskit_affine accesskit_affine_flip_x(void);22282229struct accesskit_affine accesskit_affine_scale(double s);22302231struct accesskit_affine accesskit_affine_scale_non_uniform(double s_x,2232double s_y);22332234struct accesskit_affine accesskit_affine_translate(struct accesskit_vec2 p);22352236struct accesskit_affine accesskit_affine_map_unit_square(2237struct accesskit_rect rect);22382239double accesskit_affine_determinant(struct accesskit_affine affine);22402241struct accesskit_affine accesskit_affine_inverse(2242struct accesskit_affine affine);22432244struct accesskit_rect accesskit_affine_transform_rect_bbox(2245struct accesskit_affine affine, struct accesskit_rect rect);22462247bool accesskit_affine_is_finite(const struct accesskit_affine *affine);22482249bool accesskit_affine_is_nan(const struct accesskit_affine *affine);22502251struct accesskit_affine accesskit_affine_mul(struct accesskit_affine a,2252struct accesskit_affine b);22532254struct accesskit_point accesskit_affine_transform_point(2255struct accesskit_affine affine, struct accesskit_point point);22562257struct accesskit_vec2 accesskit_point_to_vec2(struct accesskit_point point);22582259struct accesskit_point accesskit_point_add_vec2(struct accesskit_point point,2260struct accesskit_vec2 vec);22612262struct accesskit_point accesskit_point_sub_vec2(struct accesskit_point point,2263struct accesskit_vec2 vec);22642265struct accesskit_vec2 accesskit_point_sub_point(struct accesskit_point a,2266struct accesskit_point b);22672268struct accesskit_rect accesskit_rect_new(double x0, double y0, double x1,2269double y1);22702271struct accesskit_rect accesskit_rect_from_points(struct accesskit_point p0,2272struct accesskit_point p1);22732274struct accesskit_rect accesskit_rect_from_origin_size(2275struct accesskit_point origin, struct accesskit_size size);22762277struct accesskit_rect accesskit_rect_with_origin(struct accesskit_rect rect,2278struct accesskit_point origin);22792280struct accesskit_rect accesskit_rect_with_size(struct accesskit_rect rect,2281struct accesskit_size size);22822283double accesskit_rect_width(const struct accesskit_rect *rect);22842285double accesskit_rect_height(const struct accesskit_rect *rect);22862287double accesskit_rect_min_x(const struct accesskit_rect *rect);22882289double accesskit_rect_max_x(const struct accesskit_rect *rect);22902291double accesskit_rect_min_y(const struct accesskit_rect *rect);22922293double accesskit_rect_max_y(const struct accesskit_rect *rect);22942295struct accesskit_point accesskit_rect_origin(const struct accesskit_rect *rect);22962297struct accesskit_size accesskit_rect_size(const struct accesskit_rect *rect);22982299struct accesskit_rect accesskit_rect_abs(const struct accesskit_rect *rect);23002301double accesskit_rect_area(const struct accesskit_rect *rect);23022303bool accesskit_rect_is_empty(const struct accesskit_rect *rect);23042305bool accesskit_rect_contains(const struct accesskit_rect *rect,2306struct accesskit_point point);23072308struct accesskit_rect accesskit_rect_union(const struct accesskit_rect *rect,2309struct accesskit_rect other);23102311struct accesskit_rect accesskit_rect_union_pt(const struct accesskit_rect *rect,2312struct accesskit_point pt);23132314struct accesskit_rect accesskit_rect_intersect(2315const struct accesskit_rect *rect, struct accesskit_rect other);23162317struct accesskit_rect accesskit_rect_translate(2318struct accesskit_rect rect, struct accesskit_vec2 translation);23192320struct accesskit_vec2 accesskit_size_to_vec2(struct accesskit_size size);23212322struct accesskit_size accesskit_size_scale(struct accesskit_size size,2323double scalar);23242325struct accesskit_size accesskit_size_add(struct accesskit_size a,2326struct accesskit_size b);23272328struct accesskit_size accesskit_size_sub(struct accesskit_size a,2329struct accesskit_size b);23302331struct accesskit_point accesskit_vec2_to_point(struct accesskit_vec2 vec2);23322333struct accesskit_size accesskit_vec2_to_size(struct accesskit_vec2 vec2);23342335struct accesskit_vec2 accesskit_vec2_add(struct accesskit_vec2 a,2336struct accesskit_vec2 b);23372338struct accesskit_vec2 accesskit_vec2_sub(struct accesskit_vec2 a,2339struct accesskit_vec2 b);23402341struct accesskit_vec2 accesskit_vec2_scale(struct accesskit_vec2 vec,2342double scalar);23432344struct accesskit_vec2 accesskit_vec2_neg(struct accesskit_vec2 vec);23452346#if defined(__APPLE__)2347/**2348* Memory is also freed when calling this function.2349*/2350void accesskit_macos_queued_events_raise(2351struct accesskit_macos_queued_events *events);2352#endif23532354#if defined(__APPLE__)2355/**2356* # Safety2357*2358* `view` must be a valid, unreleased pointer to an `NSView`.2359*/2360struct accesskit_macos_adapter *accesskit_macos_adapter_new(2361void *view, bool is_view_focused,2362accesskit_action_handler_callback action_handler,2363void *action_handler_userdata);2364#endif23652366#if defined(__APPLE__)2367void accesskit_macos_adapter_free(struct accesskit_macos_adapter *adapter);2368#endif23692370#if defined(__APPLE__)2371/**2372* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2373* It can be null if the adapter is not active.2374*/2375struct accesskit_macos_queued_events *accesskit_macos_adapter_update_if_active(2376struct accesskit_macos_adapter *adapter,2377accesskit_tree_update_factory update_factory,2378void *update_factory_userdata);2379#endif23802381#if defined(__APPLE__)2382/**2383* Update the tree state based on whether the window is focused.2384*2385* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2386* It can be null if the adapter is not active.2387*/2388struct accesskit_macos_queued_events *2389accesskit_macos_adapter_update_view_focus_state(2390struct accesskit_macos_adapter *adapter, bool is_focused);2391#endif23922393#if defined(__APPLE__)2394/**2395* Returns a pointer to an `NSArray`. Ownership of the pointer is not2396* transferred.2397*/2398void *accesskit_macos_adapter_view_children(2399struct accesskit_macos_adapter *adapter,2400accesskit_activation_handler_callback activation_handler,2401void *activation_handler_userdata);2402#endif24032404#if defined(__APPLE__)2405/**2406* Returns a pointer to an `NSObject`. Ownership of the pointer is not2407* transferred.2408*/2409void *accesskit_macos_adapter_focus(2410struct accesskit_macos_adapter *adapter,2411accesskit_activation_handler_callback activation_handler,2412void *activation_handler_userdata);2413#endif24142415#if defined(__APPLE__)2416/**2417* Returns a pointer to an `NSObject`. Ownership of the pointer is not2418* transferred.2419*/2420void *accesskit_macos_adapter_hit_test(2421struct accesskit_macos_adapter *adapter, double x, double y,2422accesskit_activation_handler_callback activation_handler,2423void *activation_handler_userdata);2424#endif24252426#if defined(__APPLE__)2427/**2428* Caller must call `accesskit_string_free` with the return value.2429*/2430char *accesskit_macos_adapter_debug(2431const struct accesskit_macos_adapter *adapter);2432#endif24332434#if defined(__APPLE__)2435/**2436* # Safety2437*2438* `view` must be a valid, unreleased pointer to an `NSView`.2439*/2440struct accesskit_macos_subclassing_adapter *2441accesskit_macos_subclassing_adapter_new(2442void *view, accesskit_activation_handler_callback activation_handler,2443void *activation_handler_userdata,2444accesskit_action_handler_callback action_handler,2445void *action_handler_userdata);2446#endif24472448#if defined(__APPLE__)2449/**2450* # Safety2451*2452* `window` must be a valid, unreleased pointer to an `NSWindow`.2453*2454* # Panics2455*2456* This function panics if the specified window doesn't currently have2457* a content view.2458*/2459struct accesskit_macos_subclassing_adapter *2460accesskit_macos_subclassing_adapter_for_window(2461void *window, accesskit_activation_handler_callback activation_handler,2462void *activation_handler_userdata,2463accesskit_action_handler_callback action_handler,2464void *action_handler_userdata);2465#endif24662467#if defined(__APPLE__)2468void accesskit_macos_subclassing_adapter_free(2469struct accesskit_macos_subclassing_adapter *adapter);2470#endif24712472#if defined(__APPLE__)2473/**2474* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2475* It can be null if the adapter is not active.2476*/2477struct accesskit_macos_queued_events *2478accesskit_macos_subclassing_adapter_update_if_active(2479struct accesskit_macos_subclassing_adapter *adapter,2480accesskit_tree_update_factory update_factory,2481void *update_factory_userdata);2482#endif24832484#if defined(__APPLE__)2485/**2486* Update the tree state based on whether the window is focused.2487*2488* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2489* It can be null if the adapter is not active.2490*/2491struct accesskit_macos_queued_events *2492accesskit_macos_subclassing_adapter_update_view_focus_state(2493struct accesskit_macos_subclassing_adapter *adapter, bool is_focused);2494#endif24952496#if defined(__APPLE__)2497/**2498* Modifies the specified class, which must be a subclass of `NSWindow`,2499* to include an `accessibilityFocusedUIElement` method that calls2500* the corresponding method on the window's content view. This is needed2501* for windowing libraries such as SDL that place the keyboard focus2502* directly on the window rather than the content view.2503*2504* # Safety2505*2506* This function is declared unsafe because the caller must ensure that the2507* code for this library is never unloaded from the application process,2508* since it's not possible to reverse this operation. It's safest2509* if this library is statically linked into the application's main executable.2510* Also, this function assumes that the specified class is a subclass2511* of `NSWindow`.2512*/2513void accesskit_macos_add_focus_forwarder_to_window_class(2514const char *class_name);2515#endif25162517#if defined(__APPLE__)2518/**2519* Modifies the specified class, which must be a subclass of `NSWindow`,2520* to include an `accessibilityFocusedUIElement` method that calls2521* the corresponding method on the window's content view. This is needed2522* for windowing libraries such as SDL that place the keyboard focus2523* directly on the window rather than the content view.2524* Caller is responsible for freeing `class_name`.2525*2526* # Safety2527*2528* This function is declared unsafe because the caller must ensure that the2529* code for this library is never unloaded from the application process,2530* since it's not possible to reverse this operation. It's safest2531* if this library is statically linked into the application's main executable.2532* Also, this function assumes that the specified class is a subclass2533* of `NSWindow`.2534*/2535void accesskit_macos_add_focus_forwarder_to_window_class_with_length(2536const char *class_name, size_t length);2537#endif25382539#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2540defined(__NetBSD__) || defined(__OpenBSD__))2541/**2542* All of the handlers will always be called from another thread.2543*/2544struct accesskit_unix_adapter *accesskit_unix_adapter_new(2545accesskit_activation_handler_callback activation_handler,2546void *activation_handler_userdata,2547accesskit_action_handler_callback action_handler,2548void *action_handler_userdata,2549accesskit_deactivation_handler_callback deactivation_handler,2550void *deactivation_handler_userdata);2551#endif25522553#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2554defined(__NetBSD__) || defined(__OpenBSD__))2555void accesskit_unix_adapter_free(struct accesskit_unix_adapter *adapter);2556#endif25572558#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2559defined(__NetBSD__) || defined(__OpenBSD__))2560/**2561* Set the bounds of the top-level window. The outer bounds contain any2562* window decoration and borders.2563*2564* # Caveats2565*2566* Since an application can not get the position of its window under2567* Wayland, calling this method only makes sense under X11.2568*/2569void accesskit_unix_adapter_set_root_window_bounds(2570struct accesskit_unix_adapter *adapter, struct accesskit_rect outer,2571struct accesskit_rect inner);2572#endif25732574#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2575defined(__NetBSD__) || defined(__OpenBSD__))2576void accesskit_unix_adapter_update_if_active(2577struct accesskit_unix_adapter *adapter,2578accesskit_tree_update_factory update_factory,2579void *update_factory_userdata);2580#endif25812582#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2583defined(__NetBSD__) || defined(__OpenBSD__))2584/**2585* Update the tree state based on whether the window is focused.2586*/2587void accesskit_unix_adapter_update_window_focus_state(2588struct accesskit_unix_adapter *adapter, bool is_focused);2589#endif25902591#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2592defined(__NetBSD__) || defined(__OpenBSD__))2593/**2594* Caller must call `accesskit_string_free` with the return value.2595*/2596char *accesskit_unix_adapter_debug(2597const struct accesskit_unix_adapter *adapter);2598#endif25992600#if defined(_WIN32)2601/**2602* Memory is also freed when calling this function.2603*/2604void accesskit_windows_queued_events_raise(2605struct accesskit_windows_queued_events *events);2606#endif26072608#if defined(_WIN32)2609struct accesskit_windows_adapter *accesskit_windows_adapter_new(2610HWND hwnd, bool is_window_focused,2611accesskit_action_handler_callback action_handler,2612void *action_handler_userdata);2613#endif26142615#if defined(_WIN32)2616void accesskit_windows_adapter_free(struct accesskit_windows_adapter *adapter);2617#endif26182619#if defined(_WIN32)2620/**2621* You must call `accesskit_windows_queued_events_raise` on the returned2622* pointer. It can be null if the adapter is not active.2623*/2624struct accesskit_windows_queued_events *2625accesskit_windows_adapter_update_if_active(2626struct accesskit_windows_adapter *adapter,2627accesskit_tree_update_factory update_factory,2628void *update_factory_userdata);2629#endif26302631#if defined(_WIN32)2632/**2633* Update the tree state based on whether the window is focused.2634*2635* You must call `accesskit_windows_queued_events_raise` on the returned2636* pointer.2637*/2638struct accesskit_windows_queued_events *2639accesskit_windows_adapter_update_window_focus_state(2640struct accesskit_windows_adapter *adapter, bool is_focused);2641#endif26422643#if defined(_WIN32)2644struct accesskit_opt_lresult accesskit_windows_adapter_handle_wm_getobject(2645struct accesskit_windows_adapter *adapter, WPARAM wparam, LPARAM lparam,2646accesskit_activation_handler_callback activation_handler,2647void *activation_handler_userdata);2648#endif26492650#if defined(_WIN32)2651/**2652* Caller must call `accesskit_string_free` with the return value.2653*/2654char *accesskit_windows_adapter_debug(2655const struct accesskit_windows_adapter *adapter);2656#endif26572658#if defined(_WIN32)2659/**2660* Creates a new Windows platform adapter using window subclassing.2661* This must be done before the window is shown or focused2662* for the first time.2663*2664* This must be called on the thread that owns the window. The activation2665* handler will always be called on that thread. The action handler2666* may or may not be called on that thread.2667*2668* # Panics2669*2670* Panics if the window is already visible.2671*/2672struct accesskit_windows_subclassing_adapter *2673accesskit_windows_subclassing_adapter_new(2674HWND hwnd, accesskit_activation_handler_callback activation_handler,2675void *activation_handler_userdata,2676accesskit_action_handler_callback action_handler,2677void *action_handler_userdata);2678#endif26792680#if defined(_WIN32)2681void accesskit_windows_subclassing_adapter_free(2682struct accesskit_windows_subclassing_adapter *adapter);2683#endif26842685#if defined(_WIN32)2686/**2687* You must call `accesskit_windows_queued_events_raise` on the returned2688* pointer. It can be null if the adapter is not active.2689*/2690struct accesskit_windows_queued_events *2691accesskit_windows_subclassing_adapter_update_if_active(2692struct accesskit_windows_subclassing_adapter *adapter,2693accesskit_tree_update_factory update_factory,2694void *update_factory_userdata);2695#endif26962697#ifdef __cplusplus2698} // extern "C"2699#endif // __cplusplus27002701#endif /* ACCESSKIT_H */270227032704