Path: blob/master/thirdparty/accesskit/include/accesskit.h
9903 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 // __cplusplus574575#if defined(__APPLE__)576typedef struct accesskit_macos_adapter accesskit_macos_adapter;577#endif578579#if defined(__APPLE__)580typedef struct accesskit_macos_queued_events accesskit_macos_queued_events;581#endif582583#if defined(__APPLE__)584typedef struct accesskit_macos_subclassing_adapter585accesskit_macos_subclassing_adapter;586#endif587588typedef struct accesskit_node accesskit_node;589590typedef struct accesskit_tree accesskit_tree;591592typedef struct accesskit_tree_update accesskit_tree_update;593594#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \595defined(__NetBSD__) || defined(__OpenBSD__))596typedef struct accesskit_unix_adapter accesskit_unix_adapter;597#endif598599#if defined(_WIN32)600typedef struct accesskit_windows_adapter accesskit_windows_adapter;601#endif602603#if defined(_WIN32)604typedef struct accesskit_windows_queued_events accesskit_windows_queued_events;605#endif606607#if defined(_WIN32)608typedef struct accesskit_windows_subclassing_adapter609accesskit_windows_subclassing_adapter;610#endif611612typedef uint64_t accesskit_node_id;613614typedef struct accesskit_node_ids {615size_t length;616const accesskit_node_id *values;617} accesskit_node_ids;618619/**620* Represents an optional value.621*622* If `has_value` is false, do not read the `value` field.623*/624typedef struct accesskit_opt_node_id {625bool has_value;626accesskit_node_id value;627} accesskit_opt_node_id;628629/**630* Represents an optional value.631*632* If `has_value` is false, do not read the `value` field.633*/634typedef struct accesskit_opt_double {635bool has_value;636double value;637} accesskit_opt_double;638639/**640* Represents an optional value.641*642* If `has_value` is false, do not read the `value` field.643*/644typedef struct accesskit_opt_index {645bool has_value;646size_t value;647} accesskit_opt_index;648649/**650* Represents an optional value.651*652* If `has_value` is false, do not read the `value` field.653*/654typedef struct accesskit_opt_color {655bool has_value;656uint32_t value;657} accesskit_opt_color;658659/**660* Represents an optional value.661*662* If `has_value` is false, do not read the `value` field.663*/664typedef struct accesskit_opt_text_decoration {665bool has_value;666accesskit_text_decoration value;667} accesskit_opt_text_decoration;668669typedef struct accesskit_lengths {670size_t length;671const uint8_t *values;672} accesskit_lengths;673674typedef struct accesskit_opt_coords {675bool has_value;676size_t length;677const float *values;678} accesskit_opt_coords;679680/**681* Represents an optional value.682*683* If `has_value` is false, do not read the `value` field.684*/685typedef struct accesskit_opt_bool {686bool has_value;687bool value;688} accesskit_opt_bool;689690/**691* Represents an optional value.692*693* If `has_value` is false, do not read the `value` field.694*/695typedef struct accesskit_opt_invalid {696bool has_value;697accesskit_invalid value;698} accesskit_opt_invalid;699700/**701* Represents an optional value.702*703* If `has_value` is false, do not read the `value` field.704*/705typedef struct accesskit_opt_toggled {706bool has_value;707accesskit_toggled value;708} accesskit_opt_toggled;709710/**711* Represents an optional value.712*713* If `has_value` is false, do not read the `value` field.714*/715typedef struct accesskit_opt_live {716bool has_value;717accesskit_live value;718} accesskit_opt_live;719720/**721* Represents an optional value.722*723* If `has_value` is false, do not read the `value` field.724*/725typedef struct accesskit_opt_text_direction {726bool has_value;727accesskit_text_direction value;728} accesskit_opt_text_direction;729730/**731* Represents an optional value.732*733* If `has_value` is false, do not read the `value` field.734*/735typedef struct accesskit_opt_orientation {736bool has_value;737accesskit_orientation value;738} accesskit_opt_orientation;739740/**741* Represents an optional value.742*743* If `has_value` is false, do not read the `value` field.744*/745typedef struct accesskit_opt_sort_direction {746bool has_value;747accesskit_sort_direction value;748} accesskit_opt_sort_direction;749750/**751* Represents an optional value.752*753* If `has_value` is false, do not read the `value` field.754*/755typedef struct accesskit_opt_aria_current {756bool has_value;757accesskit_aria_current value;758} accesskit_opt_aria_current;759760/**761* Represents an optional value.762*763* If `has_value` is false, do not read the `value` field.764*/765typedef struct accesskit_opt_auto_complete {766bool has_value;767accesskit_auto_complete value;768} accesskit_opt_auto_complete;769770/**771* Represents an optional value.772*773* If `has_value` is false, do not read the `value` field.774*/775typedef struct accesskit_opt_has_popup {776bool has_value;777accesskit_has_popup value;778} accesskit_opt_has_popup;779780/**781* Represents an optional value.782*783* If `has_value` is false, do not read the `value` field.784*/785typedef struct accesskit_opt_list_style {786bool has_value;787accesskit_list_style value;788} accesskit_opt_list_style;789790/**791* Represents an optional value.792*793* If `has_value` is false, do not read the `value` field.794*/795typedef struct accesskit_opt_text_align {796bool has_value;797accesskit_text_align value;798} accesskit_opt_text_align;799800/**801* Represents an optional value.802*803* If `has_value` is false, do not read the `value` field.804*/805typedef struct accesskit_opt_vertical_offset {806bool has_value;807accesskit_vertical_offset value;808} accesskit_opt_vertical_offset;809810/**811* A 2D affine transform. Derived from812* [kurbo](https://github.com/linebender/kurbo).813*/814typedef struct accesskit_affine {815double _0[6];816} accesskit_affine;817818/**819* A rectangle. Derived from [kurbo](https://github.com/linebender/kurbo).820*/821typedef struct accesskit_rect {822/**823* The minimum x coordinate (left edge).824*/825double x0;826/**827* The minimum y coordinate (top edge in y-down spaces).828*/829double y0;830/**831* The maximum x coordinate (right edge).832*/833double x1;834/**835* The maximum y coordinate (bottom edge in y-down spaces).836*/837double y1;838} accesskit_rect;839840/**841* Represents an optional value.842*843* If `has_value` is false, do not read the `value` field.844*/845typedef struct accesskit_opt_rect {846bool has_value;847struct accesskit_rect value;848} accesskit_opt_rect;849850typedef struct accesskit_text_position {851accesskit_node_id node;852size_t character_index;853} accesskit_text_position;854855typedef struct accesskit_text_selection {856struct accesskit_text_position anchor;857struct accesskit_text_position focus;858} accesskit_text_selection;859860/**861* Represents an optional value.862*863* If `has_value` is false, do not read the `value` field.864*/865typedef struct accesskit_opt_text_selection {866bool has_value;867struct accesskit_text_selection value;868} accesskit_opt_text_selection;869870/**871* Use `accesskit_custom_action_new` to create this struct. Do not reallocate872* `description`.873*874* When you get this struct, you are responsible for freeing `description`.875*/876typedef struct accesskit_custom_action {877int32_t id;878char *description;879} accesskit_custom_action;880881typedef struct accesskit_custom_actions {882size_t length;883struct accesskit_custom_action *values;884} accesskit_custom_actions;885886/**887* A 2D point. Derived from [kurbo](https://github.com/linebender/kurbo).888*/889typedef struct accesskit_point {890/**891* The x coordinate.892*/893double x;894/**895* The y coordinate.896*/897double y;898} accesskit_point;899900typedef enum accesskit_action_data_Tag {901ACCESSKIT_ACTION_DATA_CUSTOM_ACTION,902ACCESSKIT_ACTION_DATA_VALUE,903ACCESSKIT_ACTION_DATA_NUMERIC_VALUE,904ACCESSKIT_ACTION_DATA_SCROLL_UNIT,905/**906* Optional suggestion for `ACCESSKIT_ACTION_SCROLL_INTO_VIEW`, specifying907* the preferred position of the target node relative to the scrollable908* container's viewport.909*/910ACCESSKIT_ACTION_DATA_SCROLL_HINT,911ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT,912ACCESSKIT_ACTION_DATA_SET_SCROLL_OFFSET,913ACCESSKIT_ACTION_DATA_SET_TEXT_SELECTION,914} accesskit_action_data_Tag;915916typedef struct accesskit_action_data {917accesskit_action_data_Tag tag;918union {919struct {920int32_t custom_action;921};922struct {923char *value;924};925struct {926double numeric_value;927};928struct {929accesskit_scroll_unit scroll_unit;930};931struct {932accesskit_scroll_hint scroll_hint;933};934struct {935struct accesskit_point scroll_to_point;936};937struct {938struct accesskit_point set_scroll_offset;939};940struct {941struct accesskit_text_selection set_text_selection;942};943};944} accesskit_action_data;945946/**947* Represents an optional value.948*949* If `has_value` is false, do not read the `value` field.950*/951typedef struct accesskit_opt_action_data {952bool has_value;953struct accesskit_action_data value;954} accesskit_opt_action_data;955956typedef struct accesskit_action_request {957accesskit_action action;958accesskit_node_id target;959struct accesskit_opt_action_data data;960} accesskit_action_request;961962/**963* A 2D vector. Derived from [kurbo](https://github.com/linebender/kurbo).964*965* This is intended primarily for a vector in the mathematical sense,966* but it can be interpreted as a translation, and converted to and967* from a point (vector relative to the origin) and size.968*/969typedef struct accesskit_vec2 {970/**971* The x-coordinate.972*/973double x;974/**975* The y-coordinate.976*/977double y;978} accesskit_vec2;979980/**981* A 2D size. Derived from [kurbo](https://github.com/linebender/kurbo).982*/983typedef struct accesskit_size {984/**985* The width.986*/987double width;988/**989* The height.990*/991double height;992} accesskit_size;993994/**995* Ownership of `request` is transferred to the callback. `request` must996* be freed using `accesskit_action_request_free`.997*/998typedef void (*accesskit_action_handler_callback)(999struct accesskit_action_request *request, void *userdata);10001001typedef void *accesskit_tree_update_factory_userdata;10021003/**1004* This function can't return a null pointer. Ownership of the returned value1005* will be transferred to the caller.1006*/1007typedef struct accesskit_tree_update *(*accesskit_tree_update_factory)(1008accesskit_tree_update_factory_userdata);10091010typedef struct accesskit_tree_update *(*accesskit_activation_handler_callback)(1011void *userdata);10121013typedef void (*accesskit_deactivation_handler_callback)(void *userdata);10141015#if defined(_WIN32)1016/**1017* Represents an optional value.1018*1019* If `has_value` is false, do not read the `value` field.1020*/1021typedef struct accesskit_opt_lresult {1022bool has_value;1023LRESULT value;1024} accesskit_opt_lresult;1025#endif10261027#ifdef __cplusplus1028extern "C" {1029#endif // __cplusplus10301031accesskit_role accesskit_node_role(const struct accesskit_node *node);10321033void accesskit_node_set_role(struct accesskit_node *node, accesskit_role value);10341035bool accesskit_node_supports_action(const struct accesskit_node *node,1036accesskit_action action);10371038void accesskit_node_add_action(struct accesskit_node *node,1039accesskit_action action);10401041void accesskit_node_remove_action(struct accesskit_node *node,1042accesskit_action action);10431044void accesskit_node_clear_actions(struct accesskit_node *node);10451046/**1047* Return whether the specified action is in the set supported on this node's1048* direct children in the filtered tree.1049*/1050bool accesskit_node_child_supports_action(const struct accesskit_node *node,1051accesskit_action action);10521053/**1054* Add the specified action to the set supported on this node's direct1055* children in the filtered tree.1056*/1057void accesskit_node_add_child_action(struct accesskit_node *node,1058accesskit_action action);10591060/**1061* Remove the specified action from the set supported on this node's direct1062* children in the filtered tree.1063*/1064void accesskit_node_remove_child_action(struct accesskit_node *node,1065accesskit_action action);10661067/**1068* Clear the set of actions supported on this node's direct children in the1069* filtered tree.1070*/1071void accesskit_node_clear_child_actions(struct accesskit_node *node);10721073bool accesskit_node_is_hidden(const struct accesskit_node *node);10741075void accesskit_node_set_hidden(struct accesskit_node *node);10761077void accesskit_node_clear_hidden(struct accesskit_node *node);10781079bool accesskit_node_is_multiselectable(const struct accesskit_node *node);10801081void accesskit_node_set_multiselectable(struct accesskit_node *node);10821083void accesskit_node_clear_multiselectable(struct accesskit_node *node);10841085bool accesskit_node_is_required(const struct accesskit_node *node);10861087void accesskit_node_set_required(struct accesskit_node *node);10881089void accesskit_node_clear_required(struct accesskit_node *node);10901091bool accesskit_node_is_visited(const struct accesskit_node *node);10921093void accesskit_node_set_visited(struct accesskit_node *node);10941095void accesskit_node_clear_visited(struct accesskit_node *node);10961097bool accesskit_node_is_busy(const struct accesskit_node *node);10981099void accesskit_node_set_busy(struct accesskit_node *node);11001101void accesskit_node_clear_busy(struct accesskit_node *node);11021103bool accesskit_node_is_live_atomic(const struct accesskit_node *node);11041105void accesskit_node_set_live_atomic(struct accesskit_node *node);11061107void accesskit_node_clear_live_atomic(struct accesskit_node *node);11081109bool accesskit_node_is_modal(const struct accesskit_node *node);11101111void accesskit_node_set_modal(struct accesskit_node *node);11121113void accesskit_node_clear_modal(struct accesskit_node *node);11141115bool accesskit_node_is_touch_transparent(const struct accesskit_node *node);11161117void accesskit_node_set_touch_transparent(struct accesskit_node *node);11181119void accesskit_node_clear_touch_transparent(struct accesskit_node *node);11201121bool accesskit_node_is_read_only(const struct accesskit_node *node);11221123void accesskit_node_set_read_only(struct accesskit_node *node);11241125void accesskit_node_clear_read_only(struct accesskit_node *node);11261127bool accesskit_node_is_disabled(const struct accesskit_node *node);11281129void accesskit_node_set_disabled(struct accesskit_node *node);11301131void accesskit_node_clear_disabled(struct accesskit_node *node);11321133bool accesskit_node_is_bold(const struct accesskit_node *node);11341135void accesskit_node_set_bold(struct accesskit_node *node);11361137void accesskit_node_clear_bold(struct accesskit_node *node);11381139bool accesskit_node_is_italic(const struct accesskit_node *node);11401141void accesskit_node_set_italic(struct accesskit_node *node);11421143void accesskit_node_clear_italic(struct accesskit_node *node);11441145bool accesskit_node_clips_children(const struct accesskit_node *node);11461147void accesskit_node_set_clips_children(struct accesskit_node *node);11481149void accesskit_node_clear_clips_children(struct accesskit_node *node);11501151bool accesskit_node_is_line_breaking_object(const struct accesskit_node *node);11521153void accesskit_node_set_is_line_breaking_object(struct accesskit_node *node);11541155void accesskit_node_clear_is_line_breaking_object(struct accesskit_node *node);11561157bool accesskit_node_is_page_breaking_object(const struct accesskit_node *node);11581159void accesskit_node_set_is_page_breaking_object(struct accesskit_node *node);11601161void accesskit_node_clear_is_page_breaking_object(struct accesskit_node *node);11621163bool accesskit_node_is_spelling_error(const struct accesskit_node *node);11641165void accesskit_node_set_is_spelling_error(struct accesskit_node *node);11661167void accesskit_node_clear_is_spelling_error(struct accesskit_node *node);11681169bool accesskit_node_is_grammar_error(const struct accesskit_node *node);11701171void accesskit_node_set_is_grammar_error(struct accesskit_node *node);11721173void accesskit_node_clear_is_grammar_error(struct accesskit_node *node);11741175bool accesskit_node_is_search_match(const struct accesskit_node *node);11761177void accesskit_node_set_is_search_match(struct accesskit_node *node);11781179void accesskit_node_clear_is_search_match(struct accesskit_node *node);11801181bool accesskit_node_is_suggestion(const struct accesskit_node *node);11821183void accesskit_node_set_is_suggestion(struct accesskit_node *node);11841185void accesskit_node_clear_is_suggestion(struct accesskit_node *node);11861187struct accesskit_node_ids accesskit_node_children(1188const struct accesskit_node *node);11891190/**1191* Caller is responsible for freeing `values`.1192*/1193void accesskit_node_set_children(struct accesskit_node *node, size_t length,1194const accesskit_node_id *values);11951196void accesskit_node_push_child(struct accesskit_node *node,1197accesskit_node_id item);11981199void accesskit_node_clear_children(struct accesskit_node *node);12001201struct accesskit_node_ids accesskit_node_controls(1202const struct accesskit_node *node);12031204/**1205* Caller is responsible for freeing `values`.1206*/1207void accesskit_node_set_controls(struct accesskit_node *node, size_t length,1208const accesskit_node_id *values);12091210void accesskit_node_push_controlled(struct accesskit_node *node,1211accesskit_node_id item);12121213void accesskit_node_clear_controls(struct accesskit_node *node);12141215struct accesskit_node_ids accesskit_node_details(1216const struct accesskit_node *node);12171218/**1219* Caller is responsible for freeing `values`.1220*/1221void accesskit_node_set_details(struct accesskit_node *node, size_t length,1222const accesskit_node_id *values);12231224void accesskit_node_push_detail(struct accesskit_node *node,1225accesskit_node_id item);12261227void accesskit_node_clear_details(struct accesskit_node *node);12281229struct accesskit_node_ids accesskit_node_described_by(1230const struct accesskit_node *node);12311232/**1233* Caller is responsible for freeing `values`.1234*/1235void accesskit_node_set_described_by(struct accesskit_node *node, size_t length,1236const accesskit_node_id *values);12371238void accesskit_node_push_described_by(struct accesskit_node *node,1239accesskit_node_id item);12401241void accesskit_node_clear_described_by(struct accesskit_node *node);12421243struct accesskit_node_ids accesskit_node_flow_to(1244const struct accesskit_node *node);12451246/**1247* Caller is responsible for freeing `values`.1248*/1249void accesskit_node_set_flow_to(struct accesskit_node *node, size_t length,1250const accesskit_node_id *values);12511252void accesskit_node_push_flow_to(struct accesskit_node *node,1253accesskit_node_id item);12541255void accesskit_node_clear_flow_to(struct accesskit_node *node);12561257struct accesskit_node_ids accesskit_node_labelled_by(1258const struct accesskit_node *node);12591260/**1261* Caller is responsible for freeing `values`.1262*/1263void accesskit_node_set_labelled_by(struct accesskit_node *node, size_t length,1264const accesskit_node_id *values);12651266void accesskit_node_push_labelled_by(struct accesskit_node *node,1267accesskit_node_id item);12681269void accesskit_node_clear_labelled_by(struct accesskit_node *node);12701271struct accesskit_node_ids accesskit_node_owns(1272const struct accesskit_node *node);12731274/**1275* Caller is responsible for freeing `values`.1276*/1277void accesskit_node_set_owns(struct accesskit_node *node, size_t length,1278const accesskit_node_id *values);12791280void accesskit_node_push_owned(struct accesskit_node *node,1281accesskit_node_id item);12821283void accesskit_node_clear_owns(struct accesskit_node *node);12841285struct accesskit_node_ids accesskit_node_radio_group(1286const struct accesskit_node *node);12871288/**1289* Caller is responsible for freeing `values`.1290*/1291void accesskit_node_set_radio_group(struct accesskit_node *node, size_t length,1292const accesskit_node_id *values);12931294void accesskit_node_push_to_radio_group(struct accesskit_node *node,1295accesskit_node_id item);12961297void accesskit_node_clear_radio_group(struct accesskit_node *node);12981299struct accesskit_opt_node_id accesskit_node_active_descendant(1300const struct accesskit_node *node);13011302void accesskit_node_set_active_descendant(struct accesskit_node *node,1303accesskit_node_id value);13041305void accesskit_node_clear_active_descendant(struct accesskit_node *node);13061307struct accesskit_opt_node_id accesskit_node_error_message(1308const struct accesskit_node *node);13091310void accesskit_node_set_error_message(struct accesskit_node *node,1311accesskit_node_id value);13121313void accesskit_node_clear_error_message(struct accesskit_node *node);13141315struct accesskit_opt_node_id accesskit_node_in_page_link_target(1316const struct accesskit_node *node);13171318void accesskit_node_set_in_page_link_target(struct accesskit_node *node,1319accesskit_node_id value);13201321void accesskit_node_clear_in_page_link_target(struct accesskit_node *node);13221323struct accesskit_opt_node_id accesskit_node_member_of(1324const struct accesskit_node *node);13251326void accesskit_node_set_member_of(struct accesskit_node *node,1327accesskit_node_id value);13281329void accesskit_node_clear_member_of(struct accesskit_node *node);13301331struct accesskit_opt_node_id accesskit_node_next_on_line(1332const struct accesskit_node *node);13331334void accesskit_node_set_next_on_line(struct accesskit_node *node,1335accesskit_node_id value);13361337void accesskit_node_clear_next_on_line(struct accesskit_node *node);13381339struct accesskit_opt_node_id accesskit_node_previous_on_line(1340const struct accesskit_node *node);13411342void accesskit_node_set_previous_on_line(struct accesskit_node *node,1343accesskit_node_id value);13441345void accesskit_node_clear_previous_on_line(struct accesskit_node *node);13461347struct accesskit_opt_node_id accesskit_node_popup_for(1348const struct accesskit_node *node);13491350void accesskit_node_set_popup_for(struct accesskit_node *node,1351accesskit_node_id value);13521353void accesskit_node_clear_popup_for(struct accesskit_node *node);13541355/**1356* Only call this function with a string that originated from AccessKit.1357*/1358void accesskit_string_free(char *string);13591360/**1361* Caller must call `accesskit_string_free` with the return value.1362*/1363char *accesskit_node_label(const struct accesskit_node *node);13641365/**1366* Caller is responsible for freeing the memory pointed by `value`.1367*/1368void accesskit_node_set_label(struct accesskit_node *node, const char *value);13691370void accesskit_node_clear_label(struct accesskit_node *node);13711372/**1373* Caller must call `accesskit_string_free` with the return value.1374*/1375char *accesskit_node_description(const struct accesskit_node *node);13761377/**1378* Caller is responsible for freeing the memory pointed by `value`.1379*/1380void accesskit_node_set_description(struct accesskit_node *node,1381const char *value);13821383void accesskit_node_clear_description(struct accesskit_node *node);13841385/**1386* Caller must call `accesskit_string_free` with the return value.1387*/1388char *accesskit_node_value(const struct accesskit_node *node);13891390/**1391* Caller is responsible for freeing the memory pointed by `value`.1392*/1393void accesskit_node_set_value(struct accesskit_node *node, const char *value);13941395void accesskit_node_clear_value(struct accesskit_node *node);13961397/**1398* Caller must call `accesskit_string_free` with the return value.1399*/1400char *accesskit_node_access_key(const struct accesskit_node *node);14011402/**1403* Caller is responsible for freeing the memory pointed by `value`.1404*/1405void accesskit_node_set_access_key(struct accesskit_node *node,1406const char *value);14071408void accesskit_node_clear_access_key(struct accesskit_node *node);14091410/**1411* Caller must call `accesskit_string_free` with the return value.1412*/1413char *accesskit_node_author_id(const struct accesskit_node *node);14141415/**1416* Caller is responsible for freeing the memory pointed by `value`.1417*/1418void accesskit_node_set_author_id(struct accesskit_node *node,1419const char *value);14201421void accesskit_node_clear_author_id(struct accesskit_node *node);14221423/**1424* Caller must call `accesskit_string_free` with the return value.1425*/1426char *accesskit_node_class_name(const struct accesskit_node *node);14271428/**1429* Caller is responsible for freeing the memory pointed by `value`.1430*/1431void accesskit_node_set_class_name(struct accesskit_node *node,1432const char *value);14331434void accesskit_node_clear_class_name(struct accesskit_node *node);14351436/**1437* Caller must call `accesskit_string_free` with the return value.1438*/1439char *accesskit_node_font_family(const struct accesskit_node *node);14401441/**1442* Caller is responsible for freeing the memory pointed by `value`.1443*/1444void accesskit_node_set_font_family(struct accesskit_node *node,1445const char *value);14461447void accesskit_node_clear_font_family(struct accesskit_node *node);14481449/**1450* Caller must call `accesskit_string_free` with the return value.1451*/1452char *accesskit_node_html_tag(const struct accesskit_node *node);14531454/**1455* Caller is responsible for freeing the memory pointed by `value`.1456*/1457void accesskit_node_set_html_tag(struct accesskit_node *node,1458const char *value);14591460void accesskit_node_clear_html_tag(struct accesskit_node *node);14611462/**1463* Caller must call `accesskit_string_free` with the return value.1464*/1465char *accesskit_node_inner_html(const struct accesskit_node *node);14661467/**1468* Caller is responsible for freeing the memory pointed by `value`.1469*/1470void accesskit_node_set_inner_html(struct accesskit_node *node,1471const char *value);14721473void accesskit_node_clear_inner_html(struct accesskit_node *node);14741475/**1476* Caller must call `accesskit_string_free` with the return value.1477*/1478char *accesskit_node_keyboard_shortcut(const struct accesskit_node *node);14791480/**1481* Caller is responsible for freeing the memory pointed by `value`.1482*/1483void accesskit_node_set_keyboard_shortcut(struct accesskit_node *node,1484const char *value);14851486void accesskit_node_clear_keyboard_shortcut(struct accesskit_node *node);14871488/**1489* Caller must call `accesskit_string_free` with the return value.1490*/1491char *accesskit_node_language(const struct accesskit_node *node);14921493/**1494* Caller is responsible for freeing the memory pointed by `value`.1495*/1496void accesskit_node_set_language(struct accesskit_node *node,1497const char *value);14981499void accesskit_node_clear_language(struct accesskit_node *node);15001501/**1502* Caller must call `accesskit_string_free` with the return value.1503*/1504char *accesskit_node_placeholder(const struct accesskit_node *node);15051506/**1507* Caller is responsible for freeing the memory pointed by `value`.1508*/1509void accesskit_node_set_placeholder(struct accesskit_node *node,1510const char *value);15111512void accesskit_node_clear_placeholder(struct accesskit_node *node);15131514/**1515* Caller must call `accesskit_string_free` with the return value.1516*/1517char *accesskit_node_role_description(const struct accesskit_node *node);15181519/**1520* Caller is responsible for freeing the memory pointed by `value`.1521*/1522void accesskit_node_set_role_description(struct accesskit_node *node,1523const char *value);15241525void accesskit_node_clear_role_description(struct accesskit_node *node);15261527/**1528* Caller must call `accesskit_string_free` with the return value.1529*/1530char *accesskit_node_state_description(const struct accesskit_node *node);15311532/**1533* Caller is responsible for freeing the memory pointed by `value`.1534*/1535void accesskit_node_set_state_description(struct accesskit_node *node,1536const char *value);15371538void accesskit_node_clear_state_description(struct accesskit_node *node);15391540/**1541* Caller must call `accesskit_string_free` with the return value.1542*/1543char *accesskit_node_tooltip(const struct accesskit_node *node);15441545/**1546* Caller is responsible for freeing the memory pointed by `value`.1547*/1548void accesskit_node_set_tooltip(struct accesskit_node *node, const char *value);15491550void accesskit_node_clear_tooltip(struct accesskit_node *node);15511552/**1553* Caller must call `accesskit_string_free` with the return value.1554*/1555char *accesskit_node_url(const struct accesskit_node *node);15561557/**1558* Caller is responsible for freeing the memory pointed by `value`.1559*/1560void accesskit_node_set_url(struct accesskit_node *node, const char *value);15611562void accesskit_node_clear_url(struct accesskit_node *node);15631564/**1565* Caller must call `accesskit_string_free` with the return value.1566*/1567char *accesskit_node_row_index_text(const struct accesskit_node *node);15681569/**1570* Caller is responsible for freeing the memory pointed by `value`.1571*/1572void accesskit_node_set_row_index_text(struct accesskit_node *node,1573const char *value);15741575void accesskit_node_clear_row_index_text(struct accesskit_node *node);15761577/**1578* Caller must call `accesskit_string_free` with the return value.1579*/1580char *accesskit_node_column_index_text(const struct accesskit_node *node);15811582/**1583* Caller is responsible for freeing the memory pointed by `value`.1584*/1585void accesskit_node_set_column_index_text(struct accesskit_node *node,1586const char *value);15871588void accesskit_node_clear_column_index_text(struct accesskit_node *node);15891590struct accesskit_opt_double accesskit_node_scroll_x(1591const struct accesskit_node *node);15921593void accesskit_node_set_scroll_x(struct accesskit_node *node, double value);15941595void accesskit_node_clear_scroll_x(struct accesskit_node *node);15961597struct accesskit_opt_double accesskit_node_scroll_x_min(1598const struct accesskit_node *node);15991600void accesskit_node_set_scroll_x_min(struct accesskit_node *node, double value);16011602void accesskit_node_clear_scroll_x_min(struct accesskit_node *node);16031604struct accesskit_opt_double accesskit_node_scroll_x_max(1605const struct accesskit_node *node);16061607void accesskit_node_set_scroll_x_max(struct accesskit_node *node, double value);16081609void accesskit_node_clear_scroll_x_max(struct accesskit_node *node);16101611struct accesskit_opt_double accesskit_node_scroll_y(1612const struct accesskit_node *node);16131614void accesskit_node_set_scroll_y(struct accesskit_node *node, double value);16151616void accesskit_node_clear_scroll_y(struct accesskit_node *node);16171618struct accesskit_opt_double accesskit_node_scroll_y_min(1619const struct accesskit_node *node);16201621void accesskit_node_set_scroll_y_min(struct accesskit_node *node, double value);16221623void accesskit_node_clear_scroll_y_min(struct accesskit_node *node);16241625struct accesskit_opt_double accesskit_node_scroll_y_max(1626const struct accesskit_node *node);16271628void accesskit_node_set_scroll_y_max(struct accesskit_node *node, double value);16291630void accesskit_node_clear_scroll_y_max(struct accesskit_node *node);16311632struct accesskit_opt_double accesskit_node_numeric_value(1633const struct accesskit_node *node);16341635void accesskit_node_set_numeric_value(struct accesskit_node *node,1636double value);16371638void accesskit_node_clear_numeric_value(struct accesskit_node *node);16391640struct accesskit_opt_double accesskit_node_min_numeric_value(1641const struct accesskit_node *node);16421643void accesskit_node_set_min_numeric_value(struct accesskit_node *node,1644double value);16451646void accesskit_node_clear_min_numeric_value(struct accesskit_node *node);16471648struct accesskit_opt_double accesskit_node_max_numeric_value(1649const struct accesskit_node *node);16501651void accesskit_node_set_max_numeric_value(struct accesskit_node *node,1652double value);16531654void accesskit_node_clear_max_numeric_value(struct accesskit_node *node);16551656struct accesskit_opt_double accesskit_node_numeric_value_step(1657const struct accesskit_node *node);16581659void accesskit_node_set_numeric_value_step(struct accesskit_node *node,1660double value);16611662void accesskit_node_clear_numeric_value_step(struct accesskit_node *node);16631664struct accesskit_opt_double accesskit_node_numeric_value_jump(1665const struct accesskit_node *node);16661667void accesskit_node_set_numeric_value_jump(struct accesskit_node *node,1668double value);16691670void accesskit_node_clear_numeric_value_jump(struct accesskit_node *node);16711672struct accesskit_opt_double accesskit_node_font_size(1673const struct accesskit_node *node);16741675void accesskit_node_set_font_size(struct accesskit_node *node, double value);16761677void accesskit_node_clear_font_size(struct accesskit_node *node);16781679struct accesskit_opt_double accesskit_node_font_weight(1680const struct accesskit_node *node);16811682void accesskit_node_set_font_weight(struct accesskit_node *node, double value);16831684void accesskit_node_clear_font_weight(struct accesskit_node *node);16851686struct accesskit_opt_index accesskit_node_row_count(1687const struct accesskit_node *node);16881689void accesskit_node_set_row_count(struct accesskit_node *node, size_t value);16901691void accesskit_node_clear_row_count(struct accesskit_node *node);16921693struct accesskit_opt_index accesskit_node_column_count(1694const struct accesskit_node *node);16951696void accesskit_node_set_column_count(struct accesskit_node *node, size_t value);16971698void accesskit_node_clear_column_count(struct accesskit_node *node);16991700struct accesskit_opt_index accesskit_node_row_index(1701const struct accesskit_node *node);17021703void accesskit_node_set_row_index(struct accesskit_node *node, size_t value);17041705void accesskit_node_clear_row_index(struct accesskit_node *node);17061707struct accesskit_opt_index accesskit_node_column_index(1708const struct accesskit_node *node);17091710void accesskit_node_set_column_index(struct accesskit_node *node, size_t value);17111712void accesskit_node_clear_column_index(struct accesskit_node *node);17131714struct accesskit_opt_index accesskit_node_row_span(1715const struct accesskit_node *node);17161717void accesskit_node_set_row_span(struct accesskit_node *node, size_t value);17181719void accesskit_node_clear_row_span(struct accesskit_node *node);17201721struct accesskit_opt_index accesskit_node_column_span(1722const struct accesskit_node *node);17231724void accesskit_node_set_column_span(struct accesskit_node *node, size_t value);17251726void accesskit_node_clear_column_span(struct accesskit_node *node);17271728struct accesskit_opt_index accesskit_node_level(1729const struct accesskit_node *node);17301731void accesskit_node_set_level(struct accesskit_node *node, size_t value);17321733void accesskit_node_clear_level(struct accesskit_node *node);17341735struct accesskit_opt_index accesskit_node_size_of_set(1736const struct accesskit_node *node);17371738void accesskit_node_set_size_of_set(struct accesskit_node *node, size_t value);17391740void accesskit_node_clear_size_of_set(struct accesskit_node *node);17411742struct accesskit_opt_index accesskit_node_position_in_set(1743const struct accesskit_node *node);17441745void accesskit_node_set_position_in_set(struct accesskit_node *node,1746size_t value);17471748void accesskit_node_clear_position_in_set(struct accesskit_node *node);17491750struct accesskit_opt_color accesskit_node_color_value(1751const struct accesskit_node *node);17521753void accesskit_node_set_color_value(struct accesskit_node *node,1754uint32_t value);17551756void accesskit_node_clear_color_value(struct accesskit_node *node);17571758struct accesskit_opt_color accesskit_node_background_color(1759const struct accesskit_node *node);17601761void accesskit_node_set_background_color(struct accesskit_node *node,1762uint32_t value);17631764void accesskit_node_clear_background_color(struct accesskit_node *node);17651766struct accesskit_opt_color accesskit_node_foreground_color(1767const struct accesskit_node *node);17681769void accesskit_node_set_foreground_color(struct accesskit_node *node,1770uint32_t value);17711772void accesskit_node_clear_foreground_color(struct accesskit_node *node);17731774struct accesskit_opt_text_decoration accesskit_node_overline(1775const struct accesskit_node *node);17761777void accesskit_node_set_overline(struct accesskit_node *node,1778accesskit_text_decoration value);17791780void accesskit_node_clear_overline(struct accesskit_node *node);17811782struct accesskit_opt_text_decoration accesskit_node_strikethrough(1783const struct accesskit_node *node);17841785void accesskit_node_set_strikethrough(struct accesskit_node *node,1786accesskit_text_decoration value);17871788void accesskit_node_clear_strikethrough(struct accesskit_node *node);17891790struct accesskit_opt_text_decoration accesskit_node_underline(1791const struct accesskit_node *node);17921793void accesskit_node_set_underline(struct accesskit_node *node,1794accesskit_text_decoration value);17951796void accesskit_node_clear_underline(struct accesskit_node *node);17971798struct accesskit_lengths accesskit_node_character_lengths(1799const struct accesskit_node *node);18001801/**1802* Caller is responsible for freeing `values`.1803*/1804void accesskit_node_set_character_lengths(struct accesskit_node *node,1805size_t length, const uint8_t *values);18061807void accesskit_node_clear_character_lengths(struct accesskit_node *node);18081809struct accesskit_lengths accesskit_node_word_lengths(1810const struct accesskit_node *node);18111812/**1813* Caller is responsible for freeing `values`.1814*/1815void accesskit_node_set_word_lengths(struct accesskit_node *node, size_t length,1816const uint8_t *values);18171818void accesskit_node_clear_word_lengths(struct accesskit_node *node);18191820struct accesskit_opt_coords accesskit_node_character_positions(1821const struct accesskit_node *node);18221823/**1824* Caller is responsible for freeing `values`.1825*/1826void accesskit_node_set_character_positions(struct accesskit_node *node,1827size_t length, const float *values);18281829void accesskit_node_clear_character_positions(struct accesskit_node *node);18301831struct accesskit_opt_coords accesskit_node_character_widths(1832const struct accesskit_node *node);18331834/**1835* Caller is responsible for freeing `values`.1836*/1837void accesskit_node_set_character_widths(struct accesskit_node *node,1838size_t length, const float *values);18391840void accesskit_node_clear_character_widths(struct accesskit_node *node);18411842struct accesskit_opt_bool accesskit_node_is_expanded(1843const struct accesskit_node *node);18441845void accesskit_node_set_expanded(struct accesskit_node *node, bool value);18461847void accesskit_node_clear_expanded(struct accesskit_node *node);18481849struct accesskit_opt_bool accesskit_node_is_selected(1850const struct accesskit_node *node);18511852void accesskit_node_set_selected(struct accesskit_node *node, bool value);18531854void accesskit_node_clear_selected(struct accesskit_node *node);18551856struct accesskit_opt_invalid accesskit_node_invalid(1857const struct accesskit_node *node);18581859void accesskit_node_set_invalid(struct accesskit_node *node,1860accesskit_invalid value);18611862void accesskit_node_clear_invalid(struct accesskit_node *node);18631864struct accesskit_opt_toggled accesskit_node_toggled(1865const struct accesskit_node *node);18661867void accesskit_node_set_toggled(struct accesskit_node *node,1868accesskit_toggled value);18691870void accesskit_node_clear_toggled(struct accesskit_node *node);18711872struct accesskit_opt_live accesskit_node_live(1873const struct accesskit_node *node);18741875void accesskit_node_set_live(struct accesskit_node *node, accesskit_live value);18761877void accesskit_node_clear_live(struct accesskit_node *node);18781879struct accesskit_opt_text_direction accesskit_node_text_direction(1880const struct accesskit_node *node);18811882void accesskit_node_set_text_direction(struct accesskit_node *node,1883accesskit_text_direction value);18841885void accesskit_node_clear_text_direction(struct accesskit_node *node);18861887struct accesskit_opt_orientation accesskit_node_orientation(1888const struct accesskit_node *node);18891890void accesskit_node_set_orientation(struct accesskit_node *node,1891accesskit_orientation value);18921893void accesskit_node_clear_orientation(struct accesskit_node *node);18941895struct accesskit_opt_sort_direction accesskit_node_sort_direction(1896const struct accesskit_node *node);18971898void accesskit_node_set_sort_direction(struct accesskit_node *node,1899accesskit_sort_direction value);19001901void accesskit_node_clear_sort_direction(struct accesskit_node *node);19021903struct accesskit_opt_aria_current accesskit_node_aria_current(1904const struct accesskit_node *node);19051906void accesskit_node_set_aria_current(struct accesskit_node *node,1907accesskit_aria_current value);19081909void accesskit_node_clear_aria_current(struct accesskit_node *node);19101911struct accesskit_opt_auto_complete accesskit_node_auto_complete(1912const struct accesskit_node *node);19131914void accesskit_node_set_auto_complete(struct accesskit_node *node,1915accesskit_auto_complete value);19161917void accesskit_node_clear_auto_complete(struct accesskit_node *node);19181919struct accesskit_opt_has_popup accesskit_node_has_popup(1920const struct accesskit_node *node);19211922void accesskit_node_set_has_popup(struct accesskit_node *node,1923accesskit_has_popup value);19241925void accesskit_node_clear_has_popup(struct accesskit_node *node);19261927struct accesskit_opt_list_style accesskit_node_list_style(1928const struct accesskit_node *node);19291930void accesskit_node_set_list_style(struct accesskit_node *node,1931accesskit_list_style value);19321933void accesskit_node_clear_list_style(struct accesskit_node *node);19341935struct accesskit_opt_text_align accesskit_node_text_align(1936const struct accesskit_node *node);19371938void accesskit_node_set_text_align(struct accesskit_node *node,1939accesskit_text_align value);19401941void accesskit_node_clear_text_align(struct accesskit_node *node);19421943struct accesskit_opt_vertical_offset accesskit_node_vertical_offset(1944const struct accesskit_node *node);19451946void accesskit_node_set_vertical_offset(struct accesskit_node *node,1947accesskit_vertical_offset value);19481949void accesskit_node_clear_vertical_offset(struct accesskit_node *node);19501951const struct accesskit_affine *accesskit_node_transform(1952const struct accesskit_node *node);19531954void accesskit_node_set_transform(struct accesskit_node *node,1955struct accesskit_affine value);19561957void accesskit_node_clear_transform(struct accesskit_node *node);19581959struct accesskit_opt_rect accesskit_node_bounds(1960const struct accesskit_node *node);19611962void accesskit_node_set_bounds(struct accesskit_node *node,1963struct accesskit_rect value);19641965void accesskit_node_clear_bounds(struct accesskit_node *node);19661967struct accesskit_opt_text_selection accesskit_node_text_selection(1968const struct accesskit_node *node);19691970void accesskit_node_set_text_selection(struct accesskit_node *node,1971struct accesskit_text_selection value);19721973void accesskit_node_clear_text_selection(struct accesskit_node *node);19741975struct accesskit_custom_action accesskit_custom_action_new(1976int32_t id, const char *description);19771978void accesskit_custom_actions_free(struct accesskit_custom_actions *value);19791980/**1981* Caller is responsible for freeing the returned value.1982*/1983const struct accesskit_custom_actions *accesskit_node_custom_actions(1984const struct accesskit_node *node);19851986/**1987* Caller is responsible for freeing `values`.1988*/1989void accesskit_node_set_custom_actions(1990struct accesskit_node *node, size_t length,1991const struct accesskit_custom_action *values);19921993void accesskit_node_push_custom_action(struct accesskit_node *node,1994struct accesskit_custom_action item);19951996void accesskit_node_clear_custom_actions(struct accesskit_node *node);19971998struct accesskit_node *accesskit_node_new(accesskit_role role);19992000void accesskit_node_free(struct accesskit_node *node);20012002struct accesskit_tree *accesskit_tree_new(accesskit_node_id root);20032004void accesskit_tree_free(struct accesskit_tree *tree);20052006/**2007* Caller must call `accesskit_string_free` with the return value.2008*/2009char *accesskit_tree_get_toolkit_name(const struct accesskit_tree *tree);20102011void accesskit_tree_set_toolkit_name(struct accesskit_tree *tree,2012const char *toolkit_name);20132014void accesskit_tree_clear_toolkit_name(struct accesskit_tree *tree);20152016/**2017* Caller must call `accesskit_string_free` with the return value.2018*/2019char *accesskit_tree_get_toolkit_version(const struct accesskit_tree *tree);20202021void accesskit_tree_set_toolkit_version(struct accesskit_tree *tree,2022const char *toolkit_version);20232024void accesskit_tree_clear_toolkit_version(struct accesskit_tree *tree);20252026struct accesskit_tree_update *accesskit_tree_update_with_focus(2027accesskit_node_id focus);20282029struct accesskit_tree_update *accesskit_tree_update_with_capacity_and_focus(2030size_t capacity, accesskit_node_id focus);20312032void accesskit_tree_update_free(struct accesskit_tree_update *update);20332034/**2035* Appends the provided node to the tree update's list of nodes.2036* Takes ownership of `node`.2037*/2038void accesskit_tree_update_push_node(struct accesskit_tree_update *update,2039accesskit_node_id id,2040struct accesskit_node *node);20412042void accesskit_tree_update_set_tree(struct accesskit_tree_update *update,2043struct accesskit_tree *tree);20442045void accesskit_tree_update_clear_tree(struct accesskit_tree_update *update);20462047void accesskit_tree_update_set_focus(struct accesskit_tree_update *update,2048accesskit_node_id focus);20492050void accesskit_action_request_free(struct accesskit_action_request *request);20512052struct accesskit_affine accesskit_affine_identity(void);20532054struct accesskit_affine accesskit_affine_flip_y(void);20552056struct accesskit_affine accesskit_affine_flip_x(void);20572058struct accesskit_affine accesskit_affine_scale(double s);20592060struct accesskit_affine accesskit_affine_scale_non_uniform(double s_x,2061double s_y);20622063struct accesskit_affine accesskit_affine_translate(struct accesskit_vec2 p);20642065struct accesskit_affine accesskit_affine_map_unit_square(2066struct accesskit_rect rect);20672068double accesskit_affine_determinant(struct accesskit_affine affine);20692070struct accesskit_affine accesskit_affine_inverse(2071struct accesskit_affine affine);20722073struct accesskit_rect accesskit_affine_transform_rect_bbox(2074struct accesskit_affine affine, struct accesskit_rect rect);20752076bool accesskit_affine_is_finite(const struct accesskit_affine *affine);20772078bool accesskit_affine_is_nan(const struct accesskit_affine *affine);20792080struct accesskit_vec2 accesskit_point_to_vec2(struct accesskit_point point);20812082struct accesskit_rect accesskit_rect_from_points(struct accesskit_point p0,2083struct accesskit_point p1);20842085struct accesskit_rect accesskit_rect_from_origin_size(2086struct accesskit_point origin, struct accesskit_size size);20872088struct accesskit_rect accesskit_rect_with_origin(struct accesskit_rect rect,2089struct accesskit_point origin);20902091struct accesskit_rect accesskit_rect_with_size(struct accesskit_rect rect,2092struct accesskit_size size);20932094double accesskit_rect_width(const struct accesskit_rect *rect);20952096double accesskit_rect_height(const struct accesskit_rect *rect);20972098double accesskit_rect_min_x(const struct accesskit_rect *rect);20992100double accesskit_rect_max_x(const struct accesskit_rect *rect);21012102double accesskit_rect_min_y(const struct accesskit_rect *rect);21032104double accesskit_rect_max_y(const struct accesskit_rect *rect);21052106struct accesskit_point accesskit_rect_origin(const struct accesskit_rect *rect);21072108struct accesskit_size accesskit_rect_size(const struct accesskit_rect *rect);21092110struct accesskit_rect accesskit_rect_abs(const struct accesskit_rect *rect);21112112double accesskit_rect_area(const struct accesskit_rect *rect);21132114bool accesskit_rect_is_empty(const struct accesskit_rect *rect);21152116bool accesskit_rect_contains(const struct accesskit_rect *rect,2117struct accesskit_point point);21182119struct accesskit_rect accesskit_rect_union(const struct accesskit_rect *rect,2120struct accesskit_rect other);21212122struct accesskit_rect accesskit_rect_union_pt(const struct accesskit_rect *rect,2123struct accesskit_point pt);21242125struct accesskit_rect accesskit_rect_intersect(2126const struct accesskit_rect *rect, struct accesskit_rect other);21272128struct accesskit_vec2 accesskit_size_to_vec2(struct accesskit_size size);21292130struct accesskit_point accesskit_vec2_to_point(struct accesskit_vec2 vec2);21312132struct accesskit_size accesskit_vec2_to_size(struct accesskit_vec2 vec2);21332134#if defined(__APPLE__)2135/**2136* Memory is also freed when calling this function.2137*/2138void accesskit_macos_queued_events_raise(2139struct accesskit_macos_queued_events *events);2140#endif21412142#if defined(__APPLE__)2143/**2144* # Safety2145*2146* `view` must be a valid, unreleased pointer to an `NSView`.2147*/2148struct accesskit_macos_adapter *accesskit_macos_adapter_new(2149void *view, bool is_view_focused,2150accesskit_action_handler_callback action_handler,2151void *action_handler_userdata);2152#endif21532154#if defined(__APPLE__)2155void accesskit_macos_adapter_free(struct accesskit_macos_adapter *adapter);2156#endif21572158#if defined(__APPLE__)2159/**2160* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2161* It can be null if the adapter is not active.2162*/2163struct accesskit_macos_queued_events *accesskit_macos_adapter_update_if_active(2164struct accesskit_macos_adapter *adapter,2165accesskit_tree_update_factory update_factory,2166void *update_factory_userdata);2167#endif21682169#if defined(__APPLE__)2170/**2171* Update the tree state based on whether the window is focused.2172*2173* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2174* It can be null if the adapter is not active.2175*/2176struct accesskit_macos_queued_events *2177accesskit_macos_adapter_update_view_focus_state(2178struct accesskit_macos_adapter *adapter, bool is_focused);2179#endif21802181#if defined(__APPLE__)2182/**2183* Returns a pointer to an `NSArray`. Ownership of the pointer is not2184* transferred.2185*/2186void *accesskit_macos_adapter_view_children(2187struct accesskit_macos_adapter *adapter,2188accesskit_activation_handler_callback activation_handler,2189void *activation_handler_userdata);2190#endif21912192#if defined(__APPLE__)2193/**2194* Returns a pointer to an `NSObject`. Ownership of the pointer is not2195* transferred.2196*/2197void *accesskit_macos_adapter_focus(2198struct accesskit_macos_adapter *adapter,2199accesskit_activation_handler_callback activation_handler,2200void *activation_handler_userdata);2201#endif22022203#if defined(__APPLE__)2204/**2205* Returns a pointer to an `NSObject`. Ownership of the pointer is not2206* transferred.2207*/2208void *accesskit_macos_adapter_hit_test(2209struct accesskit_macos_adapter *adapter, double x, double y,2210accesskit_activation_handler_callback activation_handler,2211void *activation_handler_userdata);2212#endif22132214#if defined(__APPLE__)2215/**2216* # Safety2217*2218* `view` must be a valid, unreleased pointer to an `NSView`.2219*/2220struct accesskit_macos_subclassing_adapter *2221accesskit_macos_subclassing_adapter_new(2222void *view, accesskit_activation_handler_callback activation_handler,2223void *activation_handler_userdata,2224accesskit_action_handler_callback action_handler,2225void *action_handler_userdata);2226#endif22272228#if defined(__APPLE__)2229/**2230* # Safety2231*2232* `window` must be a valid, unreleased pointer to an `NSWindow`.2233*2234* # Panics2235*2236* This function panics if the specified window doesn't currently have2237* a content view.2238*/2239struct accesskit_macos_subclassing_adapter *2240accesskit_macos_subclassing_adapter_for_window(2241void *window, accesskit_activation_handler_callback activation_handler,2242void *activation_handler_userdata,2243accesskit_action_handler_callback action_handler,2244void *action_handler_userdata);2245#endif22462247#if defined(__APPLE__)2248void accesskit_macos_subclassing_adapter_free(2249struct accesskit_macos_subclassing_adapter *adapter);2250#endif22512252#if defined(__APPLE__)2253/**2254* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2255* It can be null if the adapter is not active.2256*/2257struct accesskit_macos_queued_events *2258accesskit_macos_subclassing_adapter_update_if_active(2259struct accesskit_macos_subclassing_adapter *adapter,2260accesskit_tree_update_factory update_factory,2261void *update_factory_userdata);2262#endif22632264#if defined(__APPLE__)2265/**2266* Update the tree state based on whether the window is focused.2267*2268* You must call `accesskit_macos_queued_events_raise` on the returned pointer.2269* It can be null if the adapter is not active.2270*/2271struct accesskit_macos_queued_events *2272accesskit_macos_subclassing_adapter_update_view_focus_state(2273struct accesskit_macos_subclassing_adapter *adapter, bool is_focused);2274#endif22752276#if defined(__APPLE__)2277/**2278* Modifies the specified class, which must be a subclass of `NSWindow`,2279* to include an `accessibilityFocusedUIElement` method that calls2280* the corresponding method on the window's content view. This is needed2281* for windowing libraries such as SDL that place the keyboard focus2282* directly on the window rather than the content view.2283*2284* # Safety2285*2286* This function is declared unsafe because the caller must ensure that the2287* code for this library is never unloaded from the application process,2288* since it's not possible to reverse this operation. It's safest2289* if this library is statically linked into the application's main executable.2290* Also, this function assumes that the specified class is a subclass2291* of `NSWindow`.2292*/2293void accesskit_macos_add_focus_forwarder_to_window_class(2294const char *class_name);2295#endif22962297#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2298defined(__NetBSD__) || defined(__OpenBSD__))2299/**2300* All of the handlers will always be called from another thread.2301*/2302struct accesskit_unix_adapter *accesskit_unix_adapter_new(2303accesskit_activation_handler_callback activation_handler,2304void *activation_handler_userdata,2305accesskit_action_handler_callback action_handler,2306void *action_handler_userdata,2307accesskit_deactivation_handler_callback deactivation_handler,2308void *deactivation_handler_userdata);2309#endif23102311#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2312defined(__NetBSD__) || defined(__OpenBSD__))2313void accesskit_unix_adapter_free(struct accesskit_unix_adapter *adapter);2314#endif23152316#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2317defined(__NetBSD__) || defined(__OpenBSD__))2318/**2319* Set the bounds of the top-level window. The outer bounds contain any2320* window decoration and borders.2321*2322* # Caveats2323*2324* Since an application can not get the position of its window under2325* Wayland, calling this method only makes sense under X11.2326*/2327void accesskit_unix_adapter_set_root_window_bounds(2328struct accesskit_unix_adapter *adapter, struct accesskit_rect outer,2329struct accesskit_rect inner);2330#endif23312332#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2333defined(__NetBSD__) || defined(__OpenBSD__))2334void accesskit_unix_adapter_update_if_active(2335struct accesskit_unix_adapter *adapter,2336accesskit_tree_update_factory update_factory,2337void *update_factory_userdata);2338#endif23392340#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || \2341defined(__NetBSD__) || defined(__OpenBSD__))2342/**2343* Update the tree state based on whether the window is focused.2344*/2345void accesskit_unix_adapter_update_window_focus_state(2346struct accesskit_unix_adapter *adapter, bool is_focused);2347#endif23482349#if defined(_WIN32)2350/**2351* Memory is also freed when calling this function.2352*/2353void accesskit_windows_queued_events_raise(2354struct accesskit_windows_queued_events *events);2355#endif23562357#if defined(_WIN32)2358struct accesskit_windows_adapter *accesskit_windows_adapter_new(2359HWND hwnd, bool is_window_focused,2360accesskit_action_handler_callback action_handler,2361void *action_handler_userdata);2362#endif23632364#if defined(_WIN32)2365void accesskit_windows_adapter_free(struct accesskit_windows_adapter *adapter);2366#endif23672368#if defined(_WIN32)2369/**2370* You must call `accesskit_windows_queued_events_raise` on the returned2371* pointer. It can be null if the adapter is not active.2372*/2373struct accesskit_windows_queued_events *2374accesskit_windows_adapter_update_if_active(2375struct accesskit_windows_adapter *adapter,2376accesskit_tree_update_factory update_factory,2377void *update_factory_userdata);2378#endif23792380#if defined(_WIN32)2381/**2382* Update the tree state based on whether the window is focused.2383*2384* You must call `accesskit_windows_queued_events_raise` on the returned2385* pointer.2386*/2387struct accesskit_windows_queued_events *2388accesskit_windows_adapter_update_window_focus_state(2389struct accesskit_windows_adapter *adapter, bool is_focused);2390#endif23912392#if defined(_WIN32)2393struct accesskit_opt_lresult accesskit_windows_adapter_handle_wm_getobject(2394struct accesskit_windows_adapter *adapter, WPARAM wparam, LPARAM lparam,2395accesskit_activation_handler_callback activation_handler,2396void *activation_handler_userdata);2397#endif23982399#if defined(_WIN32)2400/**2401* Creates a new Windows platform adapter using window subclassing.2402* This must be done before the window is shown or focused2403* for the first time.2404*2405* This must be called on the thread that owns the window. The activation2406* handler will always be called on that thread. The action handler2407* may or may not be called on that thread.2408*2409* # Panics2410*2411* Panics if the window is already visible.2412*/2413struct accesskit_windows_subclassing_adapter *2414accesskit_windows_subclassing_adapter_new(2415HWND hwnd, accesskit_activation_handler_callback activation_handler,2416void *activation_handler_userdata,2417accesskit_action_handler_callback action_handler,2418void *action_handler_userdata);2419#endif24202421#if defined(_WIN32)2422void accesskit_windows_subclassing_adapter_free(2423struct accesskit_windows_subclassing_adapter *adapter);2424#endif24252426#if defined(_WIN32)2427/**2428* You must call `accesskit_windows_queued_events_raise` on the returned2429* pointer. It can be null if the adapter is not active.2430*/2431struct accesskit_windows_queued_events *2432accesskit_windows_subclassing_adapter_update_if_active(2433struct accesskit_windows_subclassing_adapter *adapter,2434accesskit_tree_update_factory update_factory,2435void *update_factory_userdata);2436#endif24372438#ifdef __cplusplus2439} // extern "C"2440#endif // __cplusplus24412442#endif /* ACCESSKIT_H */244324442445