| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FLUTTER_SHELL_PLATFORM_LINUX_FL_ACCESSIBLE_NODE_H_ |
| #define FLUTTER_SHELL_PLATFORM_LINUX_FL_ACCESSIBLE_NODE_H_ |
| |
| #include <atk/atk.h> |
| #include <gio/gio.h> |
| |
| #include "flutter/shell/platform/embedder/embedder.h" |
| #include "flutter/shell/platform/linux/public/flutter_linux/fl_engine.h" |
| |
| G_BEGIN_DECLS |
| |
| // ATK g_autoptr macros weren't added until 2.37. Add them manually. |
| // https://gitlab.gnome.org/GNOME/atk/-/issues/10 |
| #if !ATK_CHECK_VERSION(2, 37, 0) |
| G_DEFINE_AUTOPTR_CLEANUP_FUNC(AtkObject, g_object_unref) |
| #endif |
| |
| #define FL_TYPE_ACCESSIBLE_NODE fl_accessible_node_get_type() |
| G_DECLARE_DERIVABLE_TYPE(FlAccessibleNode, |
| fl_accessible_node, |
| FL, |
| ACCESSIBLE_NODE, |
| AtkObject); |
| |
| /** |
| * FlAccessibleNode: |
| * |
| * #FlAccessibleNode is an object that exposes a Flutter accessibility node to |
| * ATK. |
| */ |
| struct _FlAccessibleNodeClass { |
| AtkObjectClass parent_class; |
| |
| void (*set_name)(FlAccessibleNode* node, const gchar* name); |
| void (*set_extents)(FlAccessibleNode* node, |
| gint x, |
| gint y, |
| gint width, |
| gint height); |
| void (*set_flags)(FlAccessibleNode* node, FlutterSemanticsFlag flags); |
| void (*set_actions)(FlAccessibleNode* node, FlutterSemanticsAction actions); |
| void (*set_value)(FlAccessibleNode* node, const gchar* value); |
| void (*set_text_selection)(FlAccessibleNode* node, gint base, gint extent); |
| |
| void (*perform_action)(FlAccessibleNode* node, |
| FlutterSemanticsAction action, |
| GBytes* data); |
| }; |
| |
| /** |
| * fl_accessible_node_new: |
| * @engine: the #FlEngine this node came from. |
| * @id: the semantics node ID this object represents. |
| * |
| * Creates a new accessibility object that exposes Flutter accessibility |
| * information to ATK. |
| * |
| * Returns: a new #FlAccessibleNode. |
| */ |
| FlAccessibleNode* fl_accessible_node_new(FlEngine* engine, int32_t id); |
| |
| /** |
| * fl_accessible_node_set_parent: |
| * @node: an #FlAccessibleNode. |
| * @parent: an #AtkObject. |
| * @index: the index of this node in the parent. |
| * |
| * Sets the parent of this node. The parent can be changed at any time. |
| */ |
| void fl_accessible_node_set_parent(FlAccessibleNode* node, |
| AtkObject* parent, |
| gint index); |
| |
| /** |
| * fl_accessible_node_set_children: |
| * @node: an #FlAccessibleNode. |
| * @children: (transfer none) (element-type AtkObject): a list of #AtkObject. |
| * |
| * Sets the children of this node. The children can be changed at any time. |
| */ |
| void fl_accessible_node_set_children(FlAccessibleNode* node, |
| GPtrArray* children); |
| |
| /** |
| * fl_accessible_node_set_name: |
| * @node: an #FlAccessibleNode. |
| * @name: a node name. |
| * |
| * Sets the name of this node as reported to the a11y consumer. |
| */ |
| void fl_accessible_node_set_name(FlAccessibleNode* node, const gchar* name); |
| |
| /** |
| * fl_accessible_node_set_extents: |
| * @node: an #FlAccessibleNode. |
| * @x: x co-ordinate of this node relative to its parent. |
| * @y: y co-ordinate of this node relative to its parent. |
| * @width: width of this node in pixels. |
| * @height: height of this node in pixels. |
| * |
| * Sets the position and size of this node. |
| */ |
| void fl_accessible_node_set_extents(FlAccessibleNode* node, |
| gint x, |
| gint y, |
| gint width, |
| gint height); |
| |
| /** |
| * fl_accessible_node_set_flags: |
| * @node: an #FlAccessibleNode. |
| * @flags: the flags for this node. |
| * |
| * Sets the flags for this node. |
| */ |
| void fl_accessible_node_set_flags(FlAccessibleNode* node, |
| FlutterSemanticsFlag flags); |
| |
| /** |
| * fl_accessible_node_set_actions: |
| * @node: an #FlAccessibleNode. |
| * @actions: the actions this node can perform. |
| * |
| * Sets the actions that this node can perform. |
| */ |
| void fl_accessible_node_set_actions(FlAccessibleNode* node, |
| FlutterSemanticsAction actions); |
| |
| /** |
| * fl_accessible_node_set_value: |
| * @node: an #FlAccessibleNode. |
| * @value: a node value. |
| * |
| * Sets the value of this node. |
| */ |
| void fl_accessible_node_set_value(FlAccessibleNode* node, const gchar* value); |
| |
| /** |
| * fl_accessible_node_set_text_selection: |
| * @node: an #FlAccessibleNode. |
| * @base: the position at which the text selection originates. |
| * @extent: the position at which the text selection terminates. |
| * |
| * Sets the text selection of this node. |
| */ |
| void fl_accessible_node_set_text_selection(FlAccessibleNode* node, |
| gint base, |
| gint extent); |
| |
| /** |
| * fl_accessible_node_dispatch_action: |
| * @node: an #FlAccessibleNode. |
| * @action: the action being dispatched. |
| * @data: (allow-none): data associated with the action. |
| * |
| * Performs a semantic action for this node. |
| */ |
| void fl_accessible_node_perform_action(FlAccessibleNode* node, |
| FlutterSemanticsAction action, |
| GBytes* data); |
| |
| G_END_DECLS |
| |
| #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_ACCESSIBLE_NODE_H_ |