accesskit.h 70 KB

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